home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-03-15 | 139.6 KB | 3,804 lines |
- ! ----------------------------------------------------------------------------
- ! Advent 961209 A classic and one of the standard Inform 6 example games
- !
- !
- ! Adapted to Inform 5: 17.5.94 to 24.5.94
- ! Modernised to Inform 5.5 and library 5/12 or later: 20.12.95
- ! Modernised to Inform 6 and library 6/1 or later: 11.11.96
- ! A few bugs removed and companion text rewritten: 9.12.96
- ! ----------------------------------------------------------------------------
-
- ! Constant TEST_VERSION;
-
- Constant Story "ADVENTURE";
- Constant Headline
- "^The Interactive Original^
- By Will Crowther (1973) and Don Woods (1977)^
- Reconstructed in three steps by:^
- Donald Ekman, David M. Baggett (1993) and Graham Nelson (1994)^
- [In memoriam Stephen Bishop (1820?-1857): GN]^";
-
- Serial "961209";
- Release 5;
-
- Constant MAX_CARRIED = 7;
- Constant MAX_SCORE = 350;
- Constant MAX_TREASURES = 15;
- Constant AMUSING_PROVIDED;
-
- Include "Parser";
- Include "VerbLib";
-
- Attribute nodwarf;
- Attribute treasure_found;
- Attribute multitude;
-
- Global caves_closed;
- Global canyon_from;
- Global treasures_found;
- Global deaths;
- Global dark_warning;
- Global feefie_count;
-
- ! ----------------------------------------------------------------------------
- ! Rules for treasures, which will be scattered all over the game
- ! ----------------------------------------------------------------------------
-
- Class Treasure
- with depositpoints 10,
- after
- [; Take: if (location==Inside_Building)
- score=score-self.depositpoints;
- score=score+5;
- if (noun hasnt treasure_found)
- { give noun treasure_found; treasures_found++;
- score=score+2;
- }
- "Taken!";
- Drop: score=score-5;
- if (location==Inside_Building)
- { score=score+self.depositpoints;
- "Safely deposited.";
- }
- ];
-
- ! ----------------------------------------------------------------------------
- ! The outside world
- ! ----------------------------------------------------------------------------
-
- Class AboveGround
- has light nodwarf;
-
- AboveGround At_End_Of_Road "At End Of Road"
- with description "You are standing at the end of a road before a small
- brick building. Around you is a forest. A small
- stream flows out of the building and down a gully.",
- w_to At_Hill_In_Road, u_to At_Hill_In_Road, e_to Inside_Building,
- d_to In_A_Valley, s_to In_A_Valley, n_to In_Forest_1,
- in_to Inside_Building,
- name "gully" "road" "street" "path";
-
- Object "well house"
- with name "well" "house" "brick" "building" "small" "wellhouse",
- description "It's a small brick building. It seems to be a well house.",
- found_in At_End_Of_Road At_Hill_In_Road Inside_Building
- has scenery;
-
- Object Stream "stream"
- with name "stream" "water" "brook" "river" "lake"
- "small" "tumbling" "splashing" "babbling" "rushing" "reservoir",
- found_in At_End_Of_Road In_A_Valley At_Slit_In_Streambed
- In_Pit In_Cavern_With_Waterfall
- At_Reservoir
- Inside_Building,
- before
- [; Drink:
- "You have taken a drink from the stream. The water
- tastes strongly of minerals, but is not unpleasant.
- It is extremely cold.";
- Take: if (bottle notin player)
- "You have nothing in which to carry the water.";
- <<Fill bottle>>;
- Insert: if (second == bottle) <<Fill bottle>>;
- "You have nothing in which to carry the water.";
- Receive: if (noun == ming_vase)
- { remove ming_vase; move shards to location;
- score=score-5;
- "The sudden change in temperature
- has delicately shattered the vase.";
- }
- if (noun == bottle) <<Fill bottle>>;
- remove noun; if (noun ofclass Treasure) score=score-5;
- print_ret (The) noun, " washes away with the stream.";
- ],
- has scenery;
-
- Object "road"
- with name "road" "street" "path" "dirt",
- description "The road is dirt, not yellow brick.",
- found_in At_End_Of_Road At_Hill_In_Road In_Forest_2
- has scenery;
-
- Object "forest"
- with name "forest" "tree" "trees" "oak" "maple" "grove" "pine"
- "spruce" "birch" "ash" "saplings" "bushes" "leaves"
- "berry" "berries" "hardwood",
- description
- "The trees of the forest are large hardwood oak and
- maple, with an occasional grove of pine or spruce.
- There is quite a bit of undergrowth, largely birch
- and ash saplings plus nondescript bushes of various
- sorts. This time of year visibility is quite
- restricted by all the leaves, but travel is quite
- easy if you detour around the spruce and berry
- bushes.",
- found_in At_End_Of_Road At_Hill_In_Road In_A_Valley
- In_Forest_1 In_Forest_2
- has scenery multitude;
-
-
- AboveGround At_Hill_In_Road "At Hill In Road"
- with description "You have walked up a hill, still in the forest. The road
- slopes back down the other side of the hill. There is a
- building in the distance.",
- e_to At_End_Of_Road,
- n_to At_End_Of_Road,
- d_to At_End_Of_Road,
- s_to In_Forest_1,
- name "gully" "road" "street" "path";
-
- Object -> "hill"
- with description "It's just a typical hill.",
- name "hill" "bump" "incline"
- has scenery;
-
- Object -> "other side of hill"
- with article "the",
- description "Why not explore it yourself?",
- name "side" "other" "of"
- has scenery;
-
-
- AboveGround Inside_Building "Inside Building"
- with description "You are inside a building, a well house for a
- large spring.",
- cant_go "The stream flows out through a pair of 1 foot
- diameter sewer pipes. The only exit is to the west.",
- before
- [; Enter: if (noun==Spring or SewerPipes)
- "The stream flows out through a pair of 1 foot
- diameter sewer pipes. It would be advisable to use the exit.";
- Xyzzy: if (In_Debris_Room hasnt visited) rfalse;
- PlayerTo(In_Debris_Room); rtrue;
- Plugh: if (At_Y2 hasnt visited) rfalse;
- PlayerTo(At_Y2); rtrue;
- ],
- w_to At_End_Of_Road, out_to At_End_Of_Road,
- in_to "The pipes are too small.";
-
- Object -> Spring "spring"
- with name "spring" "large",
- description "The stream flows out through a pair of 1 foot
- diameter sewer pipes."
- has scenery;
-
- Object -> SewerPipes "pair of 1 foot diameter sewer pipes"
- with name "pipes" "pipe" "one" "foot" "diameter" "sewer" "sewer-pipes",
- description "Too small. The only exit is to the west."
- has scenery;
-
- Object -> set_of_keys "set of keys"
- with description "It's just a normal-looking set of keys.",
- initial "There are some keys on the ground here.",
- before
- [; Count: "A dozen or so keys.";
- ],
- name "keys" "key" "keyring" "set" "of" "bunch";
-
-
- Object -> tasty_food "tasty food"
- with description "Sure looks yummy!", article "some",
- initial "There is tasty food here.",
- name "food" "ration" "rations" "tripe"
- "yummy" "tasty" "delicious" "scrumptious",
- after
- [; Eat: "Delicious!"; ],
- has edible;
-
-
- Object -> brass_lantern "brass lantern"
- with name "lamp" "headlamp" "headlight" "lantern" "light" "shiny" "brass",
- when_off "There is a shiny brass lamp nearby.",
- when_on "Your lamp is here, gleaming brightly.",
-
- power_remaining 330,
- replace_batteries
- [; if (fresh_batteries in player or location)
- { remove fresh_batteries; give fresh_batteries general;
- move old_batteries to location;
- self.power_remaining = 2500;
- "I'm taking the liberty of replacing the batteries.";
- }
- ],
-
- daemon
- [ t; if (self hasnt on) { StopDaemon(self); rtrue; }
- t = --(self.power_remaining);
-
- if (t==0) give self ~on ~light;
-
- if (self in player || self in location)
- { if (t==0)
- {
- print "Your lamp has run out of power.";
- if (fresh_batteries notin player && location hasnt light)
- { deadflag=3;
- " You can't explore the cave without a lamp. So
- let's just call it a day.";
- }
- else self.replace_batteries();
- new_line; rtrue;
- }
- if (t==30)
- { print "Your lamp is getting dim.";
- if (fresh_batteries has general)
- " You're also out of spare batteries.
- You'd best start wrapping this up.";
- if (fresh_batteries in VendingMachine
- && Dead_End_14 has visited)
- " You'd best start wrapping this up,
- unless you can find some fresh
- batteries. I seem to recall there's a
- vending machine in the maze. Bring
- some coins with you.";
- if (fresh_batteries notin
- VendingMachine or player or location)
- " You'd best go back for those batteries.";
- new_line; rtrue;
- }
- }
- ],
- before
- [; Examine: print "It is a shiny brass lamp";
- if (self hasnt on)
- ". It is not currently lit.";
- if (self.power_remaining < 30)
- ", glowing dimly.";
- ", glowing brightly.";
- Burn: <<SwitchOn self>>;
- Rub: "Rubbing the electric lamp is not particularly
- rewarding. Anyway, nothing exciting happens.";
- SwitchOn: if (self.power_remaining <= 0)
- "Unfortunately, the batteries seem to be dead.";
- Receive:
- if (noun == old_batteries)
- "Those batteries are dead; they won't do any good at all.";
- if (noun == fresh_batteries)
- { self.replace_batteries(); rtrue; }
- "The only thing you might successfully put in
- the lamp is a fresh pair of batteries.";
- ],
- after
- [; SwitchOn: give self light; StartDaemon(self);
- SwitchOff: give self ~light;
- ],
- has switchable;
-
-
- Object -> bottle "small bottle"
- with name "bottle" "jar" "flask",
- initial "There is an empty bottle here.",
- before
- [; LetGo:
- if (noun in bottle)
- "You're holding that already (in the bottle).";
- Receive:
- if (noun == stream or Oil) <<Fill self>>;
- else "The bottle is only supposed to hold liquids.";
- Fill:
- if (child(bottle) ~= nothing)
- "The bottle is full already.";
- if (stream in location || Spring in location)
- { move water_in_the_bottle to bottle;
- "The bottle is now full of water.";
- }
- if (Oil in location)
- { move oil_in_the_bottle to bottle;
- "The bottle is now full of oil.";
- }
- "There is nothing here with which to fill the bottle.";
- Empty: if (child(bottle) == nothing) "The bottle is already empty!";
- remove child(bottle);
- "Your bottle is now empty and the ground is now wet.";
- ],
- has container open;
-
- Object water_in_the_bottle "bottled water"
- with name "bottled" "water" "h2o", article "some",
- before
- [; Drink: remove water_in_the_bottle; <<Drink Stream>>;
- ],
- description "It looks like ordinary water to me.";
-
- Object oil_in_the_bottle "bottled oil"
- with name "oil" "bottled" "lubricant" "grease", article "some",
- before
- [; Drink: <<Drink Oil>>;
- ],
- description "It looks like ordinary oil to me.";
-
-
- AboveGround In_Forest_1 "In Forest"
- with description "You are in open forest, with a deep valley to one side.",
- e_to In_A_Valley,
- d_to In_A_Valley,
- n_to In_Forest_1,
- w_to In_Forest_1,
- s_to In_Forest_1,
- initial [; if (random(2)==1) PlayerTo(In_Forest_2,1); ];
-
- AboveGround In_Forest_2 "In Forest"
- with description "You are in open forest near both a valley and a road.",
- n_to At_End_Of_Road,
- e_to In_A_Valley,
- w_to In_A_Valley,
- d_to In_A_Valley,
- s_to In_Forest_1;
-
-
- AboveGround In_A_Valley "In A Valley"
- with description
- "You are in a valley in the forest beside a
- stream tumbling along a rocky bed.",
- n_to At_End_Of_Road,
- e_to In_Forest_1,
- w_to In_Forest_1,
- u_to In_Forest_1,
- s_to At_Slit_In_Streambed,
- d_to At_Slit_In_Streambed, name "valley";
-
- Object -> "streambed"
- with name "bed" "streambed" "rock" "small" "rocky" "bare" "dry"
- has scenery;
-
-
- AboveGround At_Slit_In_Streambed "At Slit In Streambed"
- with description "At your feet all the water of the stream
- splashes into a 2-inch slit in the rock. Downstream
- the streambed is bare rock.",
- n_to In_A_Valley,
- e_to In_Forest_1,
- w_to In_Forest_1,
- s_to Outside_Grate,
- d_to "You don't fit through a two-inch slit!",
- in_to "You don't fit through a two-inch slit!";
-
- Object -> "2-inch slit"
- with name "slit" "two" "inch" "2-inch",
- description
- "It's just a 2-inch slit in the rock, through which the
- stream is flowing.",
- before
- [; Enter: "You don't fit through a two-inch slit!";
- ],
- has scenery;
-
-
- AboveGround Outside_Grate "Outside Grate"
- with description
- "You are in a 20-foot depression floored with
- bare dirt. Set into the dirt is a strong steel grate
- mounted in concrete. A dry streambed leads into the
- depression.",
- e_to In_Forest_1,
- w_to In_Forest_1,
- s_to In_Forest_1,
- n_to At_Slit_In_Streambed,
- d_to
- [; if (Grate hasnt locked && Grate hasnt open)
- { print "(first opening the grate)^"; give Grate open; }
- return Grate;
- ];
-
- Object -> "20-foot depression"
- with description "You're standing in it.",
- name "depression" "dirt" "twenty" "foot" "bare" "20-foot",
- has scenery;
-
- Object -> Grate "steel grate"
- with name "grate" "lock" "gate" "grille" "metal" "strong" "steel" "grating",
- description "It just looks like an ordinary grate mounted in concrete.",
- with_key set_of_keys,
- door_dir
- [; if (location==Below_The_Grate) return u_to; return d_to;
- ],
- door_to
- [; if (location==Below_The_Grate) return Outside_Grate;
- return Below_The_Grate;
- ],
- describe
- [; if (self has open) "^The grate stands open.";
- if (self hasnt locked) "^The grate is unlocked but shut.";
- rtrue;
- ],
- found_in Below_The_Grate Outside_Grate
- has static door openable lockable locked;
-
- ! ----------------------------------------------------------------------------
- ! Facilis descensus Averno...
- ! ----------------------------------------------------------------------------
-
- Object Below_The_Grate "Below the Grate"
- with description
- "You are in a small chamber beneath a 3x3 steel
- grate to the surface. A low crawl over cobbles leads
- inward to the west.",
- w_to In_Cobble_Crawl,
- u_to Grate
- has light;
-
-
- Object "cobbles"
- with description "They're just ordinary cobbles.",
- name "cobble" "cobbles" "cobblestones" "cobblestone" "stones" "stone",
- found_in In_Cobble_Crawl In_Debris_Room Below_The_Grate
- has scenery multitude;
-
- Object In_Cobble_Crawl "In Cobble Crawl"
- with description
- "You are crawling over cobbles in a low passage.
- There is a dim light at the east end of the
- passage.",
- e_to Below_The_Grate,
- w_to In_Debris_Room
- has light;
-
- Object -> wicker_cage "wicker cage"
- with description "It's a small wicker cage.",
- initial "There is a small wicker cage discarded nearby.",
- name "cage" "small" "wicker",
- after
- [; Open: if (little_bird notin self) rfalse;
- print "(releasing the little bird)^";
- <<Release little_bird>>;
- ],
- has container open openable transparent;
-
-
- Object In_Debris_Room "In Debris Room"
- with description
- "You are in a debris room filled with stuff
- washed in from the surface. A low wide passage with
- cobbles becomes plugged with mud and debris here, but
- an awkward canyon leads upward and west.^^
- A note on the wall says, ~Magic word XYZZY.~",
- e_to In_Cobble_Crawl,
- u_to In_Awkward_Sloping_E_W_Canyon,
- w_to In_Awkward_Sloping_E_W_Canyon,
- before
- [; Xyzzy: PlayerTo(Inside_Building); rtrue;
- ],
- has nodwarf;
-
- Object -> "debris"
- with description "Yuck.",
- name "debris" "stuff" "mud"
- has scenery;
-
- Object -> "note"
- with description "The note says ~Magic word XYZZY~.",
- name "note"
- has scenery;
-
- Object -> black_rod "black rod with a rusty star on the end"
- with description "It's a three foot black rod with a rusty star on an end.",
- initial "A three foot black rod
- with a rusty star on one end lies nearby.",
- name "rod" "star" "black" "rusty" "star" "three" "foot" "iron",
- before
- [; Wave:
- if (location==West_Side_Of_Fissure or On_East_Bank_Of_Fissure)
- { if (caves_closed) "Peculiar. Nothing happens.";
- if (CrystalBridge notin nothing)
- { remove CrystalBridge; give CrystalBridge absent;
- West_Side_Of_Fissure.e_to = 0;
- On_East_Bank_Of_Fissure.w_to = 0;
- "The crystal bridge has vanished!";
- }
- else
- { move CrystalBridge to location; give CrystalBridge ~absent;
- West_Side_Of_Fissure.e_to = CrystalBridge;
- On_East_Bank_Of_Fissure.w_to = CrystalBridge;
- "A crystal bridge now spans the fissure.";
- }
- }
- "Nothing happens.";
- ];
-
-
- Object In_Awkward_Sloping_E_W_Canyon "Sloping E/W Canyon"
- with description
- "You are in an awkward sloping east/west canyon.",
- d_to In_Debris_Room,
- e_to In_Debris_Room,
- u_to In_Bird_Chamber,
- w_to In_Bird_Chamber
- has nodwarf;
-
- ! ----------------------------------------------------------------------------
- ! The little bird in its natural habitat
- ! ----------------------------------------------------------------------------
-
- Object In_Bird_Chamber "Orange River Chamber"
- with description
- "You are in a splendid chamber thirty feet high.
- The walls are frozen rivers of orange stone. An
- awkward canyon and a good passage exit from east and
- west sides of the chamber.",
- e_to In_Awkward_Sloping_E_W_Canyon,
- w_to At_Top_Of_Small_Pit
- has nodwarf;
-
- Object -> little_bird "little bird"
- with name "cheerful" "mournful" "little" "bird",
- initial "A cheerful little bird is sitting here singing.",
- before
- [; Examine:
- if (self in wicker_cage)
- "The little bird looks unhappy in the cage.";
- "The cheerful little bird is sitting here singing.";
- Insert: if (second==wicker_cage) <<Catch self>>;
- else
- "Don't put the poor bird in ", (the) second, "!";
- Drop, Remove:
- if (self in wicker_cage)
- { print "(The bird is released from the cage.)^^";
- <<Release self>>;
- }
- Take, Catch:
- if (self in wicker_cage)
- "You already have the little bird. If
- you take it out of the cage it will likely
- fly away from you.";
- if (wicker_cage notin player)
- "You can catch the bird, but you cannot carry it.";
- if (black_rod in player)
- "The bird was unafraid when you entered, but
- as you approach it becomes disturbed and you
- cannot catch it.";
- move self to wicker_cage; give wicker_cage ~open;
- "You catch the bird in the wicker cage.";
-
- Release:
- if (self notin wicker_cage) "The bird is not caged now.";
- give wicker_cage open;
- move self to location;
-
- if (Snake in location)
- { remove Snake;
- "The little bird attacks the green snake, and
- in an astounding flurry drives the snake
- away.";
- }
-
- if (Dragon in location)
- { remove self;
- "The little bird attacks the green dragon,
- and in an astounding flurry gets burnt to a
- cinder. The ashes blow away.";
- }
-
- "The little bird flies free.";
- ],
-
- life
- [; Give: "It's not hungry. (It's merely pinin' for the
- fjords). Besides, I suspect it would prefer bird seed.";
- Order, Ask, Answer: "Cheep! Chirp!";
- Attack:
- if (self in wicker_cage)
- "Oh, leave the poor unhappy bird alone.";
- remove self;
- "The little bird is now dead. Its body disappears.";
- ],
- has animate;
-
-
- Object At_Top_Of_Small_Pit "At Top of Small Pit"
- with description
- "At your feet is a small pit breathing traces of
- white mist. A west passage ends here except for a
- small crack leading on.^^
- Rough stone steps lead down the pit.",
- e_to In_Bird_Chamber,
- w_to "The crack is far too small for you to follow.",
- d_to
- [; if (large_gold_nugget in player)
- { deadflag=1;
- "You are at the bottom of the pit with a broken neck.";
- }
- return In_Hall_Of_Mists;
- ],
- before
- [; Enter: if (noun==PitCrack)
- "The crack is far too small for you to follow.";
- ],
- has nodwarf;
-
-
- Object -> "small pit"
- with description "The pit is breathing traces of white mist.",
- name "pit" "small"
- has scenery;
-
- Object -> PitCrack "crack"
- with description
- "The crack is very small -- far too small for you to follow.",
- name "crack" "small"
- has scenery;
-
- Object "mist"
- with description
- "Mist is a white vapor, usually water, seen from time
- to time in caverns. It can be found anywhere but is
- frequently a sign of a deep pit leading down to
- water.",
- name "mist" "vapor" "wisps" "white",
- found_in At_Top_Of_Small_Pit In_Hall_Of_Mists
- On_East_Bank_Of_Fissure At_Window_On_Pit_1
- At_West_End_Of_Hall_Of_Mists In_Misty_Cavern
- In_Mirror_Canyon At_Reservoir At_Window_On_Pit_2
- On_Sw_Side_Of_Chasm
- has scenery;
-
- ! ----------------------------------------------------------------------------
- ! The caves open up: The Hall of Mists
- ! ----------------------------------------------------------------------------
-
- Object In_Hall_Of_Mists "In Hall of Mists"
- with initial
- [; if (self has general) rfalse;
- score=score+25; give self general;
- ],
- description
- "You are at one end of a vast hall stretching
- forward out of sight to the west. There are openings
- to either side. Nearby, a wide stone staircase leads
- downward. The hall is filled with wisps of white
- mist swaying to and fro almost as if alive. A cold
- wind blows up the staircase. There is a passage at
- the top of a dome behind you.^^
- Rough stone steps lead up the dome.",
- s_to In_Nugget_Of_Gold_Room,
- w_to On_East_Bank_Of_Fissure,
- d_to In_Hall_Of_Mt_King,
- n_to In_Hall_Of_Mt_King,
- u_to
- [; if (large_gold_nugget in player) "The dome is unclimbable.";
- return At_Top_Of_Small_Pit;
- ];
-
- Object -> "wide stone staircase"
- with description "The staircase leads down.",
- name "stair" "stairs" "staircase" "wide" "stone"
- has scenery;
-
- Object -> "rough stone steps"
- with description "The rough stone steps lead up the dome.",
- name "stair" "stairs" "staircase" "rough" "stone"
- has scenery multitude;
-
- Object -> "dome"
- with name "dome",
- before
- [; Examine: if (large_gold_nugget in player)
- "I'm not sure you'll be able to get up it
- with what you're carrying.";
- "It looks like you might be able to climb up it.";
- Climb: MovePlayer(u_obj); rtrue;
- ],
- has scenery;
-
-
- Object In_Nugget_Of_Gold_Room "Low Room"
- with description
- "This is a low room with a crude note on the
- wall:^^
- ~You won't get it up the steps~.",
- n_to In_Hall_Of_Mists;
-
- Object -> "note"
- with description "The note says, ~You won't get it up the steps~.",
- name "note" "crude"
- has scenery;
-
- Treasure -> large_gold_nugget "large gold nugget"
- with description "It's a large sparkling nugget of gold!",
- initial "There is a large sparkling nugget of gold here!",
- name "gold" "nugget" "large" "heavy";
-
-
- Class FissureRoom
- with before
- [;
- Jump: if (CrystalBridge hasnt absent)
- "I respectfully suggest you go across the
- bridge instead of jumping.";
- deadflag=1;
- "You didn't make it.";
- ],
- d_to "The fissure is too terrifying!";
-
-
- FissureRoom On_East_Bank_Of_Fissure "On East Bank of Fissure"
- with description
- "You are on the east bank of a fissure slicing
- clear across the hall. The mist is quite thick here,
- and the fissure is too wide to jump.",
- e_to In_Hall_Of_Mists, w_to "The fissure is too wide.";
-
- FissureRoom West_Side_Of_Fissure "West Side of Fissure"
- with description
- "You are on the west side of the fissure in the
- hall of mists.",
- w_to At_West_End_Of_Hall_Of_Mists,
- e_to "The fissure is too wide.",
- n_to At_West_End_Of_Hall_Of_Mists,
- before
- [; Go: if (location==West_Side_Of_Fissure && noun==n_obj)
- print "You have crawled through a very low wide passage
- parallel to and north of the hall of mists.^";
- ];
-
- Treasure -> "diamonds"
- with article "some",
- description "They look to be of the highest quality!",
- initial "There are diamonds here!",
- name "diamond" "diamonds" "several" "high" "quality"
- has multitude;
-
-
- Object CrystalBridge "crystal bridge"
- with initial "A crystal bridge now spans the fissure.",
- description "It spans the fissure, thereby providing you a way across.",
- door_dir
- [; if (location==West_Side_Of_Fissure) return e_to; return w_to;
- ],
- door_to
- [; if (location==West_Side_Of_Fissure) return On_East_Bank_Of_Fissure;
- return West_Side_Of_Fissure;
- ],
- name "crystal" "bridge",
- found_in On_East_Bank_Of_Fissure West_Side_Of_Fissure
- has static door open absent;
-
- Object "fissure"
- with name "wide" "fissure",
- description "The fissure looks far too wide to jump.",
- found_in On_East_Bank_Of_Fissure West_Side_Of_Fissure
- has scenery;
-
-
- Object At_West_End_Of_Hall_Of_Mists "At West End of Hall of Mists"
- with description
- "You are at the west end of the hall of mists.
- A low wide crawl continues west and another goes
- north. To the south is a little passage 6 feet off
- the floor.",
- s_to Alike_Maze_1,
- u_to Alike_Maze_1,
- e_to West_Side_Of_Fissure,
- w_to At_East_End_Of_Long_Hall,
- n_to West_Side_Of_Fissure,
- before
- [; Go: if (noun==n_obj)
- print "You have crawled through a very low wide passage
- parallel to and north of the hall of mists.^";
- ];
-
- ! ----------------------------------------------------------------------------
- ! Long Hall to the west of the Hall of Mists
- ! ----------------------------------------------------------------------------
-
- Object At_East_End_Of_Long_Hall "At East End of Long Hall"
- with description
- "You are at the east end of a very long hall
- apparently without side chambers. To the east a low
- wide crawl slants up. To the north a round two foot
- hole slants down.",
- e_to At_West_End_Of_Hall_Of_Mists,
- u_to At_West_End_Of_Hall_Of_Mists,
- w_to At_West_End_Of_Long_Hall,
- n_to Crossover,
- d_to Crossover;
-
- Object At_West_End_Of_Long_Hall "At West End of Long Hall"
- with description
- "You are at the west end of a very long
- featureless hall. The hall joins up with a narrow
- north/south passage.",
- e_to At_East_End_Of_Long_Hall,
- s_to Different_Maze_1,
- n_to Crossover;
-
- Object Crossover "N/S and E/W Crossover"
- with description
- "You are at a crossover of a high N/S passage
- and a low E/W one.",
- w_to At_East_End_Of_Long_Hall,
- n_to Dead_End_7,
- e_to In_West_Side_Chamber,
- s_to At_West_End_Of_Long_Hall;
-
- Object -> "crossover"
- with description "You know as much as I do at this point.",
- name "crossover" "over" "cross"
- has scenery;
-
- ! ----------------------------------------------------------------------------
- ! Many Dead Ends will be needed for the maze below, so define a class:
- ! ----------------------------------------------------------------------------
-
- Class DeadEndRoom
- with short_name "Dead End",
- description "You have reached a dead end.",
- cant_go "You'll have to go back the way you came.";
-
- DeadEndRoom Dead_End_7
- with s_to Crossover,
- out_to Crossover;
-
- ! ----------------------------------------------------------------------------
- ! The Hall of the Mountain King and side chambers
- ! ----------------------------------------------------------------------------
-
- Object In_Hall_Of_Mt_King "Hall of the Mountain King"
- with description
- "You are in the hall of the mountain king, with
- passages off in all directions.",
- cant_go "Well, perhaps not quite all directions.",
- u_to In_Hall_Of_Mists,
- e_to In_Hall_Of_Mists,
- n_to Low_N_S_Passage,
- s_to In_South_Side_Chamber,
- w_to In_West_Side_Chamber,
- sw_to In_Secret_E_W_Canyon,
- before
- [; Go: if (Snake in self
- && (noun == n_obj or s_obj or w_obj
- || (noun == sw_obj && random(100) <= 35)))
- "You can't get by the snake.";
- ];
-
- Object -> Snake "snake"
- with description "I wouldn't mess with it if I were you.",
- initial "A huge green fierce snake bars the way!",
- name "snake" "cobra" "asp" "huge" "fierce" "green"
- "ferocious" "venemous" "venomous" "large" "big" "killer",
- life
- [; Order, Ask, Answer: "Hiss!";
- ThrowAt: if (noun==axe) <<Attack self>>;
- <<Give noun self>>;
- Give: if (noun==little_bird)
- { remove little_bird;
- "The snake has now devoured your bird.";
- }
- "There's nothing here it wants to eat (except perhaps you).";
- Attack: "Attacking the snake both doesn't work
- and is very dangerous.";
- Take: deadflag=1; "It takes you instead. Glrp!";
- ],
- has animate;
-
-
- Object Low_N_S_Passage "Low N/S Passage"
- with description
- "You are in a low N/S passage at a hole in the
- floor. The hole goes down to an E/W passage.",
- s_to In_Hall_Of_Mt_King,
- d_to In_Dirty_Passage,
- n_to At_Y2;
-
- Treasure -> "bars of silver"
- with description "They're probably worth a fortune!",
- initial "There are bars of silver here!",
- article "some",
- name "silver" "bars";
-
-
- Object In_South_Side_Chamber "In South Side Chamber"
- with description
- "You are in the south side chamber.",
- n_to In_Hall_Of_Mt_King;
-
- Treasure -> "precious jewelry"
- with description "It's all quite exquisite!",
- initial "There is precious jewelry here!",
- article "some",
- name "jewel" "jewels" "jewelry" "precious" "exquisite";
-
-
- Object In_West_Side_Chamber "In West Side Chamber"
- with description
- "You are in the west side chamber of the hall of
- the mountain king. A passage continues west and up here.",
- w_to Crossover,
- u_to Crossover,
- e_to In_Hall_Of_Mt_King;
-
- Treasure -> rare_coins "rare coins"
- with description "They're a numismatist's dream!",
- initial "There are many coins here!", article "many",
- name "coins" "rare",
- has multitude;
-
- ! ----------------------------------------------------------------------------
- ! The Y2 Rock Room and environs, slightly below
- ! ----------------------------------------------------------------------------
-
- Object At_Y2 "At ~Y2~"
- with description
- "You are in a large room, with a passage to the
- south, a passage to the west, and a wall of broken
- rock to the east. There is a large ~Y2~ on
- a rock in the room's center.",
- after
- [; Look: if (random(100)<=25) print "^A hollow voice says, ~Plugh.~^";
- ],
- before
- [;
- Plugh: PlayerTo(Inside_Building); rtrue;
- Plover: if (In_Plover_Room hasnt visited) rfalse;
- if (egg_sized_emerald in player)
- { move egg_sized_emerald to In_Plover_Room;
- score = score - 5;
- }
- PlayerTo(In_Plover_Room); rtrue;
- ],
- s_to Low_N_S_Passage,
- e_to Jumble_Of_Rock,
- w_to At_Window_On_Pit_1;
-
- Object -> "~Y2~ rock"
- with description "There is a large ~Y2~ painted on the rock.",
- name "rock" "y2"
- has scenery supporter;
-
- Object Jumble_Of_Rock "Jumble of Rock"
- with description "You are in a jumble of rock, with cracks everywhere.",
- d_to At_Y2,
- u_to In_Hall_Of_Mists;
-
- Object At_Window_On_Pit_1 "At Window on Pit"
- with description
- "You're at a low window overlooking a huge pit,
- which extends up out of sight. A floor is
- indistinctly visible over 50 feet below. Traces of
- white mist cover the floor of the pit, becoming
- thicker to the right. Marks in the dust around the
- window would seem to indicate that someone has been
- here recently. Directly across the pit from you and
- 25 feet away there is a similar window looking into a
- lighted room. A shadowy figure can be seen there
- peering back at you.",
- before
- [; WaveHands: "The shadowy figure waves back at you!";
- ],
- cant_go "The only passage is back east to Y2.",
- e_to At_Y2;
-
- Class PitScenery
- with found_in At_Window_On_Pit_1 At_Window_On_Pit_2,
- has scenery;
-
- PitScenery "window"
- with description
- "It looks like a regular window.",
- name "window" "low",
- has openable;
-
- PitScenery "huge pit"
- with description
- "It's so deep you can barely make out the floor below,
- and the top isn't visible at all.",
- name "pit" "deep" "large";
-
- PitScenery "marks in the dust"
- with description "Evidently you're not alone here.",
- name "marks" "dust"
- has multitude;
-
- PitScenery "shadowy figure"
- with description
- "The shadowy figure seems to be trying to attract
- your attention.",
- name "figure" "shadow" "person" "individual" "shadowy" "mysterious";
-
-
- Object In_Dirty_Passage "Dirty Passage"
- with description
- "You are in a dirty broken passage. To the east
- is a crawl. To the west is a large passage. Above
- you is a hole to another passage.",
- e_to On_Brink_Of_Pit,
- u_to Low_N_S_Passage,
- w_to In_Dusty_Rock_Room;
-
- Object On_Brink_Of_Pit "Brink of Pit"
- with description
- "You are on the brink of a small clean climbable
- pit. A crawl leads west.",
- w_to In_Dirty_Passage,
- d_to In_Pit,
- in_to In_Pit;
-
- Object -> "small pit"
- with description "It looks like you might be able to climb down into it.",
- name "pit" "small" "clean" "climbable",
- before
- [; Climb, Enter: MovePlayer(d_obj); rtrue; ],
- has scenery;
-
-
- Object In_Pit "In Pit"
- with description
- "You are in the bottom of a small pit with a
- little stream, which enters and exits through tiny
- slits.",
- u_to On_Brink_Of_Pit,
- d_to "You don't fit through the tiny slits!"
- has nodwarf;
-
-
- Object -> "tiny slits"
- with description "The slits form a complex pattern in the rock.",
- name "slit" "slits" "tiny"
- has scenery multitude;
-
- Object In_Dusty_Rock_Room "In Dusty Rock Room"
- with description
- "You are in a large room full of dusty rocks.
- There is a big hole in the floor. There are cracks
- everywhere, and a passage leading east.",
- e_to In_Dirty_Passage,
- d_to At_Complex_Junction;
-
- Object -> "dusty rocks"
- with description "They're just rocks. (Dusty ones, that is.)",
- name "rocks" "boulders" "stones" "rock" "boulder" "stone"
- "dusty" "dirty"
- has scenery multitude;
-
- ! ----------------------------------------------------------------------------
- ! A maze of twisty little passages, all alike...
- ! ----------------------------------------------------------------------------
-
- Class MazeRoom
- with short_name "Maze",
- description
- "You are in a maze of twisty little passages, all alike.",
- out_to "Easier said than done.";
-
-
- MazeRoom Alike_Maze_1
- with
- u_to At_West_End_Of_Hall_Of_Mists,
- n_to Alike_Maze_1,
- e_to Alike_Maze_2,
- s_to Alike_Maze_4,
- w_to Alike_Maze_11;
-
- MazeRoom Alike_Maze_2
- with
- w_to Alike_Maze_1,
- s_to Alike_Maze_3,
- e_to Alike_Maze_4;
-
- MazeRoom Alike_Maze_3
- with
- e_to Alike_Maze_2,
- d_to Dead_End_3,
- s_to Alike_Maze_6,
- n_to Dead_End_13;
-
- MazeRoom Alike_Maze_4
- with
- w_to Alike_Maze_1,
- n_to Alike_Maze_2,
- e_to Dead_End_1,
- s_to Dead_End_2,
- u_to Alike_Maze_14,
- d_to Alike_Maze_14;
-
- MazeRoom Alike_Maze_5
- with
- e_to Alike_Maze_6,
- w_to Alike_Maze_7;
-
- MazeRoom Alike_Maze_6
- with
- e_to Alike_Maze_3,
- w_to Alike_Maze_5,
- d_to Alike_Maze_7,
- s_to Alike_Maze_8;
-
- DeadEndRoom Dead_End_1
- with
- w_to Alike_Maze_4,
- out_to Alike_Maze_4;
-
- DeadEndRoom Dead_End_2
- with
- w_to Alike_Maze_4,
- out_to Alike_Maze_4;
-
- DeadEndRoom Dead_End_3
- with
- u_to Alike_Maze_3,
- out_to Alike_Maze_3;
-
- MazeRoom Alike_Maze_7
- with
- w_to Alike_Maze_5,
- u_to Alike_Maze_6,
- e_to Alike_Maze_8,
- s_to Alike_Maze_9;
-
- MazeRoom Alike_Maze_8
- with
- w_to Alike_Maze_6,
- e_to Alike_Maze_7,
- s_to Alike_Maze_8,
- u_to Alike_Maze_9,
- n_to Alike_Maze_10,
- d_to Dead_End_12;
-
- MazeRoom Alike_Maze_9
- with
- w_to Alike_Maze_7,
- n_to Alike_Maze_8,
- s_to Dead_End_4;
-
- DeadEndRoom Dead_End_4
- with
- w_to Alike_Maze_9,
- out_to Alike_Maze_9;
-
- MazeRoom Alike_Maze_10
- with
- w_to Alike_Maze_8,
- n_to Alike_Maze_10,
- d_to Dead_End_5,
- e_to At_Brink_Of_Pit;
-
- DeadEndRoom Dead_End_5
- with
- u_to Alike_Maze_10,
- out_to Alike_Maze_10;
-
- Object At_Brink_Of_Pit "At Brink of Pit"
- with description
- "You are on the brink of a thirty foot pit with
- a massive orange column down one wall. You could
- climb down here but you could not get back up. The
- maze continues at this level.",
- d_to In_Bird_Chamber,
- w_to Alike_Maze_10,
- s_to Dead_End_6,
- n_to Alike_Maze_12,
- e_to Alike_Maze_13;
-
- Object -> "massive orange column"
- with description "It looks like you could climb down it.",
- name "column" "massive" "orange" "big" "huge",
- before [; Climb: MovePlayer(d_obj); rtrue; ],
- has scenery;
-
- Object -> "pit"
- with description "You'll have to climb down to find out anything more...",
- name "pit" "thirty" "foot" "thirty-foot",
- before [; Climb: MovePlayer(d_obj); rtrue; ],
- has scenery;
-
- DeadEndRoom Dead_End_6
- with e_to At_Brink_Of_Pit,
- out_to At_Brink_Of_Pit;
-
- ! ----------------------------------------------------------------------------
- ! A line of three vital junctions, east to west
- ! ----------------------------------------------------------------------------
-
- Object At_Complex_Junction "At Complex Junction"
- with description
- "You are at a complex junction. A low hands and
- knees passage from the north joins a higher crawl
- from the east to make a walking passage going west.
- There is also a large room above. The air is damp
- here.",
- u_to In_Dusty_Rock_Room,
- w_to In_Bedquilt,
- n_to In_Shell_Room,
- e_to In_Anteroom;
-
- Object In_Bedquilt "Bedquilt"
- with description
- "You are in bedquilt, a long east/west passage
- with holes everywhere. To explore at random select
- north, south, up, or down.",
- e_to At_Complex_Junction,
- w_to In_Swiss_Cheese_Room,
- s_to In_Slab_Room,
- u_to In_Dusty_Rock_Room,
- n_to At_Junction_Of_Three,
- d_to In_Anteroom,
- before
- [ destiny;
- Go: if (noun==s_obj or d_obj && random(100)<=80) destiny=1;
- if (noun==u_obj && random(100)<=80) destiny=1;
- if (noun==u_obj && random(100)<=50)
- destiny=In_Secret_N_S_Canyon_1;
- if (noun==n_obj && random(100)<=60) destiny=1;
- if (noun==n_obj && random(100)<=75)
- destiny=In_Large_Low_Room;
- if (destiny==1)
- "You have crawled around in some little holes and
- wound up back in the main passage.";
- if (destiny==0) rfalse;
- PlayerTo(destiny); rtrue;
- ];
-
-
- Object In_Swiss_Cheese_Room "In Swiss Cheese Room"
- with description
- "You are in a room whose walls resemble swiss
- cheese. Obvious passages go west, east, ne, and nw.
- Part of the room is occupied by a large bedrock
- block.",
- w_to At_East_End_Of_Twopit_Room,
- s_to In_Tall_E_W_Canyon,
- ne_to In_Bedquilt,
- nw_to In_Oriental_Room,
- e_to In_Soft_Room,
- before
- [; Go: if ((noun==s_obj && random(100) <= 80)
- || (noun==nw_obj && random(100) <= 50))
- "You have crawled around in some little holes and
- wound up back in the main passage.";
- ];
-
-
- Object -> "bedrock block"
- with description "It's just a huge block.",
- name "block" "bedrock" "large",
- before [; LookUnder, Push, Pull, Take:
- "Surely you're joking."; ],
- has scenery;
-
- ! ----------------------------------------------------------------------------
- ! The Twopit Room area
- ! ----------------------------------------------------------------------------
- ! Possible heights for the plant:
- ! ----------------------------------------------------------------------------
- Constant TINY_P = 0;
- Constant TALL_P = 1;
- Constant HUGE_P = 2;
-
- Object At_West_End_Of_Twopit_Room "At West End of Twopit Room"
- with description
- "You are at the west end of the twopit room.
- There is a large hole in the wall above the pit at
- this end of the room.",
- e_to At_East_End_Of_Twopit_Room,
- w_to In_Slab_Room,
- d_to In_West_Pit,
- u_to "It is too far up for you to reach.",
- before
- [; Enter: if (noun==HoleAbovePit_1)
- "It is too far up for you to reach.";
- ];
-
- Object PlantStickingUp "beanstalk"
- with found_in At_West_End_Of_Twopit_Room At_East_End_Of_Twopit_Room,
- name "plant" "beanstalk" "stalk"
- "bean" "giant" "tiny" "little" "murmuring"
- "twelve" "foot" "tall" "bellowing",
- describe
- [; if (Plant.height == TALL_P)
- "The top of a 12-foot-tall beanstalk is
- poking out of the west pit.";
- "There is a huge beanstalk growing out of the
- west pit up to the hole.";
- ],
- before
- [; Examine: RunRoutines(self,describe); rtrue;
- Climb: if (Plant.height==HUGE_P) <<Climb Plant>>;
- ],
- has absent static;
-
- Object HoleAbovePit_1 "hole above pit"
- with description
- "The hole is in the wall above the pit at
- this end of the room.",
- name "hole" "large" "above" "pit",
- found_in In_West_Pit At_West_End_Of_Twopit_Room
- has scenery;
-
-
- Object In_West_Pit "In West Pit"
- with description
- "You are at the bottom of the western pit in the
- twopit room. There is a large hole in the wall about
- 25 feet above you.",
- before
- [; Climb:
- if (noun==Plant) rfalse;
- if (Plant.height == TINY_P)
- "There is nothing here to climb. Use ~up~
- or ~out~ to leave the pit.";
- ],
- u_to At_West_End_Of_Twopit_Room
- has nodwarf;
-
- Object -> Plant "plant"
- with height TINY_P,
- name "plant" "beanstalk" "stalk"
- "bean" "giant" "tiny" "little" "murmuring"
- "twelve" "foot" "tall" "bellowing",
- describe
- [; switch(self.height)
- { TINY_P:
- "There is a tiny little plant in the pit,
- murmuring ~Water, water, ...~";
- TALL_P:
- "There is a 12-foot-tall beanstalk stretching
- up out of the pit, bellowing ~Water!! Water!!~";
- HUGE_P:
- "There is a gigantic beanstalk stretching all
- the way up to the hole.";
- }
- ],
- before
- [;
- Climb: switch(self.height)
- { TINY_P: "It's just a little plant!";
- TALL_P:
- print "You have climbed up the plant
- and out of the pit.^";
- PlayerTo(At_West_End_Of_Twopit_Room); rtrue;
- HUGE_P:
- print "You clamber up the plant and scurry through
- the hole at the top.^";
- PlayerTo(In_Narrow_Corridor); rtrue;
- }
- Take: "The plant has exceptionally deep roots and
- cannot be pulled free.";
- Water: if (bottle notin player)
- "You have nothing to water the plant with.";
-
- switch(child(bottle))
- { nothing: "The bottle is empty.";
- oil_in_the_bottle:
- remove oil_in_the_bottle;
- "The plant indignantly shakes the oil
- off its leaves and asks, ~Water?~";
- }
- remove water_in_the_bottle;
-
- switch((self.height)++)
- { TINY_P:
- print "The plant spurts into furious growth for a
- few seconds.^^";
- give PlantStickingUp ~absent;
- TALL_P:
- print "The plant grows explosively, almost filling
- the bottom of the pit.^^";
- HUGE_P:
- print "You've over-watered the plant! It's
- shriveling up! It's, it's...^^";
- give PlantStickingUp absent; remove PlantStickingUp;
- self.height = TINY_P;
- }
- <<Examine self>>;
- Oil: <<Water self>>;
- Examine: self.describe(); rtrue;
- ];
-
-
- Object At_East_End_Of_Twopit_Room "At East End of Twopit Room"
- with description
- "You are at the east end of the twopit room.
- The floor here is littered with thin rock slabs,
- which make it easy to descend the pits. There is a
- path here bypassing the pits to connect passages from
- east and west. There are holes all over, but the
- only big one is on the wall directly over the west
- pit where you can't get to it.",
- e_to In_Swiss_Cheese_Room,
- w_to At_West_End_Of_Twopit_Room,
- d_to In_East_Pit;
-
-
- Object -> "thin rock slabs"
- with
- description "They almost form natural stairs down into the pit.",
- name "slabs" "slab" "rocks" "stairs" "thin" "rock",
- before
- [; LookUnder, Push, Pull, Take: "Surely you're joking.";
- ],
- has scenery multitude;
-
-
- Object In_East_Pit "In East Pit"
- with description
- "You are at the bottom of the eastern pit in the
- twopit room. There is a small pool of oil in one
- corner of the pit.",
- u_to At_East_End_Of_Twopit_Room
- has nodwarf;
-
- Object -> Oil "pool of oil"
- with name "pool" "oil" "small",
- description "It looks like ordinary oil.",
- before
- [; Drink: "Absolutely not.";
- Take: if (bottle notin player)
- "You have nothing in which to carry the oil.";
- <<Fill bottle>>;
- Insert: if (second == bottle) <<Fill bottle>>;
- "You have nothing in which to carry the oil.";
- ],
- has scenery;
-
- Object "hole above pit"
- with description
- "The hole is in the wall above you.",
- name "hole" "large" "above" "pit",
- found_in In_East_Pit At_East_End_Of_Twopit_Room
- has scenery;
-
-
- Object In_Slab_Room "Slab Room"
- with description
- "You are in a large low circular chamber whose
- floor is an immense slab fallen from the ceiling
- (slab room). East and west there once were large
- passages, but they are now filled with boulders. Low
- small passages go north and south, and the south one
- quickly bends west around the boulders.",
- s_to At_West_End_Of_Twopit_Room,
- u_to In_Secret_N_S_Canyon_0,
- n_to In_Bedquilt;
-
- Object -> "slab"
- with description "It is now the floor here.",
- name "slab" "immense",
- before [; LookUnder, Push, Pull, Take:
- "Surely you're joking."; ],
- has scenery;
-
- Object -> "boulders"
- with description "They're just ordinary boulders.",
- name "boulder" "boulders" "rocks" "stones"
- has scenery multitude;
-
- ! ----------------------------------------------------------------------------
- ! A small network of Canyons, mainly Secret
- ! ----------------------------------------------------------------------------
-
- Object In_Secret_N_S_Canyon_0 "Secret N/S Canyon"
- with description
- "You are in a secret N/S canyon above a large
- room.",
- d_to In_Slab_Room,
- s_to In_Secret_Canyon,
- n_to In_Mirror_Canyon,
- before
- [; Go: if (noun==s_obj) canyon_from=self;
- ];
-
- Object In_Secret_N_S_Canyon_1 "Secret N/S Canyon"
- with description
- "You are in a secret N/S canyon above a sizable passage.",
- n_to At_Junction_Of_Three,
- d_to In_Bedquilt,
- s_to Atop_Stalactite;
-
- Object At_Junction_Of_Three
- "Junction of Three Secret Canyons"
- with description
- "You are in a secret canyon at a junction of
- three canyons, bearing north, south, and se. The
- north one is as tall as the other two combined.",
- se_to In_Bedquilt,
- s_to In_Secret_N_S_Canyon_1,
- n_to At_Window_On_Pit_2;
-
-
- Object In_Large_Low_Room "Large Low Room"
- with description
- "You are in a large low room. Crawls lead
- north, se, and sw.",
- sw_to In_Sloping_Corridor,
- se_to In_Oriental_Room,
- n_to Dead_End_Crawl;
-
- Object Dead_End_Crawl "Dead End Crawl"
- with description
- "This is a dead end crawl.",
- s_to In_Large_Low_Room,
- out_to In_Large_Low_Room;
-
-
- Object In_Secret_E_W_Canyon "Secret E/W Canyon Above Tight Canyon"
- with description
- "You are in a secret canyon which here runs E/W.
- It crosses over a very tight canyon 15 feet below.
- If you go down you may not be able to get back up.",
- e_to In_Hall_Of_Mt_King,
- w_to In_Secret_Canyon,
- before
- [; Go: if (noun==w_obj) canyon_from=self;
- ],
- d_to In_N_S_Canyon;
-
- Object In_N_S_Canyon "N/S Canyon"
- with description
- "You are at a wide place in a very tight N/S canyon.",
- s_to Canyon_Dead_End,
- n_to In_Tall_E_W_Canyon;
-
- Object Canyon_Dead_End "Canyon Dead End"
- with description
- "The canyon here becomes too tight to go further south.",
- n_to In_N_S_Canyon;
-
- Object In_Tall_E_W_Canyon "In Tall E/W Canyon"
- with description
- "You are in a tall E/W canyon. A low tight
- crawl goes 3 feet north and seems to open up.",
- e_to In_N_S_Canyon,
- w_to Dead_End_8,
- n_to In_Swiss_Cheese_Room;
-
- Object Atop_Stalactite "Atop Stalactite"
- with description
- "A large stalactite extends from the roof and
- almost reaches the floor below. You could climb down
- it, and jump from it to the floor, but having done so
- you would be unable to reach it to climb back up.",
- n_to In_Secret_N_S_Canyon_1,
- d_to
- [; if (random(100) <= 40) return Alike_Maze_6;
- if (random(100) <= 50) return Alike_Maze_9;
- return Alike_Maze_4;
- ],
- before
- [; Jump, Climb: <<Go d_obj>>;
- ];
-
-
- Object -> "stalactite"
- with description
- "You could probably climb down it, but you can forget
- coming back up.",
- name "stalactite" "stalagmite" "stalagtite" "large",
- before
- [; LookUnder, Push, Take: "Do get a grip on yourself.";
- ],
- has scenery;
-
- ! ----------------------------------------------------------------------------
- ! Here be dragons
- ! ----------------------------------------------------------------------------
-
- Object In_Secret_Canyon "Secret Canyon"
- with description
- "You are in a secret canyon which exits to the
- north and east.",
- e_to
- [; if (canyon_from == In_Secret_E_W_Canyon) return canyon_from;
- if (Dragon in location)
- "The dragon looks rather nasty. You'd best not try to get by.";
- return In_Secret_E_W_Canyon;
- ],
- n_to
- [; if (canyon_from == In_Secret_N_S_Canyon_0) return canyon_from;
- if (Dragon in location)
- "The dragon looks rather nasty. You'd best not try to get by.";
- return In_Secret_N_S_Canyon_0;
- ],
- out_to
- [; return canyon_from;
- ],
- before
- [; if (action==##Yes && Dragon has general)
- { remove Dragon; move DragonCorpse to location;
- give Dragon ~general;
- "Congratulations! You have just vanquished a
- dragon with your bare hands! (Unbelievable,
- isn't it?)";
- }
- if (action==##No && Dragon has general)
- { give Dragon ~general;
- "I should think not.";
- }
- give Dragon ~general;
- ];
-
- Object -> Dragon "dragon"
- with description "I wouldn't mess with it if I were you.",
- name "dragon" "monster" "beast" "lizard"
- "huge" "green" "fierce" "scaly" "giant" "ferocious",
- initial "A huge green fierce dragon bars the way!",
- life
- [; Attack: give Dragon general; "With what? Your bare hands?";
- Give: "The dragon is implacable.";
- ThrowAt: if (noun~=axe)
- "You'd probably be better off using your
- bare hands than that thing!";
- move axe to location;
- "The axe bounces harmlessly off the dragon's
- thick scales.";
- ],
- has animate;
-
- Treasure -> "Persian rug"
- with name "rug" "persian" "persian" "fine" "finest" "dragon^s",
- depositpoints 14,
- before
- [; Take: if (Dragon in location)
- "You'll need to get the dragon to move first!";
- ],
- describe
- [; if (Dragon in location)
- "The dragon is sprawled out on the Persian rug!";
- "The Persian rug is spread out on the floor here.";
- ];
-
- Object DragonCorpse "dragon's body"
- with initial
- "The body of a huge green dead dragon is lying off to one side.",
- name "dragon" "corpse" "dead" "dragon^s" "body",
- before
- [; Attack: "You've already done enough damage!";
- ],
- has static;
-
- ! ----------------------------------------------------------------------------
- ! And more of the Alike Maze
- ! ----------------------------------------------------------------------------
-
- DeadEndRoom Dead_End_8
- with description "The canyon runs into a mass of boulders -- dead end.",
- s_to In_Tall_E_W_Canyon,
- out_to In_Tall_E_W_Canyon;
-
- MazeRoom Alike_Maze_11
- with
- n_to Alike_Maze_1,
- w_to Alike_Maze_11,
- s_to Alike_Maze_11,
- e_to Dead_End_9,
- ne_to Dead_End_10;
-
- DeadEndRoom Dead_End_9
- with w_to Alike_Maze_11,
- out_to Alike_Maze_11;
-
- DeadEndRoom Dead_End_10
- with
- s_to Alike_Maze_3,
- out_to Alike_Maze_3;
-
- MazeRoom Alike_Maze_12
- with
- s_to At_Brink_Of_Pit,
- e_to Alike_Maze_13,
- w_to Dead_End_11;
-
- MazeRoom Alike_Maze_13
- with
- n_to At_Brink_Of_Pit,
- w_to Alike_Maze_12,
- nw_to Dead_End_13;
-
- DeadEndRoom Dead_End_11
- with
- e_to Alike_Maze_12,
- out_to Alike_Maze_12;
-
- DeadEndRoom Dead_End_12
- with
- u_to Alike_Maze_8,
- out_to Alike_Maze_8;
-
- MazeRoom Alike_Maze_14
- with
- u_to Alike_Maze_4,
- d_to Alike_Maze_4;
-
- DeadEndRoom Dead_End_13
- with se_to Alike_Maze_13,
- out_to Alike_Maze_13,
- description "This is the pirate's dead end.",
- initial
- [;
- StopDaemon(Pirate);
- if (treasure_chest in self && treasure_chest hasnt moved)
- "You've found the pirate's treasure chest!";
- ],
- has nodwarf;
-
- Treasure -> treasure_chest "treasure chest"
- with depositpoints 12,
- description "It's the pirate's treasure chest, filled with
- riches of all kinds!",
- initial "The pirate's treasure chest is here!",
- name "chest" "box" "treasure" "riches" "pirate" "pirate^s" "treasure";
-
- ! ----------------------------------------------------------------------------
- ! Above the beanstalk: the Giant Room and the Waterfall
- ! ----------------------------------------------------------------------------
-
- Object In_Narrow_Corridor "In Narrow Corridor"
- with description
- "You are in a long, narrow corridor stretching
- out of sight to the west. At the eastern end is a
- hole through which you can see a profusion of
- leaves.",
- d_to In_West_Pit,
- w_to In_Giant_Room,
- e_to In_West_Pit,
- before
- [; Jump: deadflag=1; "You fall and break your neck!";
- ];
-
- Object -> "leaves"
- with description
- "The leaves appear to be attached to the beanstalk
- you climbed to get here.", article "some",
- name "leaf" "leaves" "plant" "tree" "stalk" "beanstalk" "profusion",
- before
- [; Count: "69,105."; ! (I thank Rene Schnoor for counting them)
- ],
- has scenery;
-
-
- Object At_Steep_Incline "Steep Incline Above Large Room"
- with description
- "You are at the top of a steep incline above a
- large room. You could climb down here, but you would
- not be able to climb up. There is a passage leading
- back to the north.",
- n_to In_Cavern_With_Waterfall,
- d_to In_Large_Low_Room;
-
- Object In_Giant_Room "Giant Room"
- with description
- "You are in the giant room. The ceiling here is
- too high up for your lamp to show it. Cavernous
- passages lead east, north, and south. On the west
- wall is scrawled the inscription, ~Fee fie foe foo~
- [sic].",
- s_to In_Narrow_Corridor,
- e_to At_Recent_Cave_In,
- n_to In_Immense_N_S_Passage;
-
- Object -> "scrawled inscription"
- with description "It says, ~Fee fie foe foo [sic].~",
- name "inscription" "writing" "scrawl" "scrawled"
- has scenery;
-
- Treasure -> golden_eggs "nest of golden eggs"
- with depositpoints 14,
- description "The nest is filled with beautiful golden eggs!",
- initial "There is a large nest here, full of golden eggs!",
- name "eggs" "egg" "nest" "golden" "beautiful",
- has multitude;
-
-
- Object At_Recent_Cave_In "Recent Cave-in"
- with description
- "The passage here is blocked by a recent
- cave-in.",
- s_to In_Giant_Room;
-
-
- Object In_Immense_N_S_Passage "Immense N/S Passage"
- with description "You are at one end of an immense north/south passage.",
- s_to In_Giant_Room,
- n_to
- [; if (RustyDoor has locked) <<Open RustyDoor>>;
- if (RustyDoor hasnt open)
- { give RustyDoor open; print "(first wrenching the door open)^"; }
- return RustyDoor;
- ];
-
- Object -> RustyDoor "rusty door"
- with description "It's just a big iron door.",
- name "door" "hinge" "hinges" "massive" "rusty" "iron",
- when_closed "The way north is barred by a massive, rusty, iron door.",
- when_open "The way north leads through a massive, rusty, iron door.",
- door_to In_Cavern_With_Waterfall,
- door_dir n_to,
- before
- [; Open: if (RustyDoor has locked)
- "The hinges are quite thoroughly rusted now
- and won't budge.";
- Close: if (RustyDoor has open)
- "With all the effort it took to get the door
- open, I wouldn't suggest closing it again.";
- "No problem there -- it already is.";
- Oil: if (bottle in player && oil_in_the_bottle in bottle)
- { remove oil_in_the_bottle;
- give RustyDoor ~locked openable;
- "The oil has freed up the hinges so that the
- door will now move, although it requires some
- effort.";
- }
- else
- "You have nothing to oil it with.";
- Water: if (bottle in player && water_in_the_bottle in bottle)
- { remove water_in_the_bottle; give RustyDoor locked ~open;
- "The hinges are quite thoroughly
- rusted now and won't budge.";
- }
- else
- "You have nothing to water it with.";
- ],
- after
- [; Open: "The door heaves open with a shower of rust.";
- ],
- has static door locked;
-
-
-
- Object In_Cavern_With_Waterfall "In Cavern With Waterfall"
- with description
- "You are in a magnificent cavern with a rushing
- stream, which cascades over a sparkling waterfall
- into a roaring whirlpool which disappears through a
- hole in the floor. Passages exit to the south and
- west.",
- s_to In_Immense_N_S_Passage,
- w_to At_Steep_Incline;
-
- Object -> "waterfall"
- with description "Wouldn't want to go down in in a barrel!",
- name "waterfall" "whirlpool" "sparkling" "whirling"
- has scenery;
-
- Treasure -> trident "jeweled trident"
- with description "The trident is covered with fabulous jewels!",
- initial "There is a jewel-encrusted trident here!",
- name "trident" "jeweled" "jewel-encrusted" "encrusted" "fabulous",
- depositpoints 14;
-
- ! ----------------------------------------------------------------------------
- ! The caves around Bedquilt
- ! ----------------------------------------------------------------------------
-
- Object In_Soft_Room "In Soft Room"
- with description
- "You are in the soft room. The walls are
- covered with heavy curtains, the floor with a thick
- pile carpet. Moss covers the ceiling.",
- w_to In_Swiss_Cheese_Room;
-
- Object -> "carpet"
- with description "The carpet is quite plush.",
- name "carpet" "shag" "pile" "heavy" "thick"
- has scenery;
-
- Object -> "curtains"
- with description "They seem to absorb sound very well.",
- name "curtain" "curtains" "heavy" "thick",
- before
- [; Take: "Now don't go ripping up the place!";
- LookUnder, Search:
- "You don't find anything exciting behind the curtains.";
- ],
- has scenery;
-
- Object -> "moss"
- with description "It just looks like your typical, everyday moss.",
- name "moss" "typical" "everyday",
- before
- [; Take: "It crumbles to nothing in your hands.";
- ],
- has scenery edible;
-
- Object -> velvet_pillow "velvet pillow"
- with description "It's just a small velvet pillow.",
- initial "A small velvet pillow lies on the floor.",
- name "pillow" "velvet" "small";
-
-
- Object In_Oriental_Room "Oriental Room"
- with description
- "This is the oriental room. Ancient oriental
- cave drawings cover the walls. A gently sloping
- passage leads upward to the north, another passage
- leads se, and a hands and knees crawl leads west.",
- w_to In_Large_Low_Room,
- se_to In_Swiss_Cheese_Room,
- u_to In_Misty_Cavern,
- n_to In_Misty_Cavern;
-
- Object -> "ancient oriental drawings"
- with description "They seem to depict people and animals.",
- name "paintings" "drawings" "art" "cave" "ancient" "oriental"
- has scenery multitude;
-
- Treasure -> ming_vase "ming vase"
- with description "It's a delicate, precious, ming vase!",
- name "vase" "ming" "delicate",
- depositpoints 14,
- after
- [; Drop: if (velvet_pillow in location)
- { print "(coming to rest, delicately, on the velvet pillow)^";
- rfalse;
- }
- remove ming_vase; move shards to location;
- "The ming vase drops with a delicate crash.";
- ],
- before
- [; Attack: remove ming_vase; move shards to location;
- "You have taken the vase and
- hurled it delicately to the ground.";
- Receive: "The vase is too fragile to use as a container.";
- ];
-
-
- Object shards "some worthless shards of pottery"
- with initial "The floor is littered with worthless shards of pottery.",
- description "They look to be the remains of what was once a
- beautiful vase. I guess some oaf must have dropped it.",
- name "pottery" "shards" "remains" "vase" "worthless",
- has multitude;
-
-
- Object In_Misty_Cavern "Misty Cavern"
- with description
- "You are following a wide path around the outer
- edge of a large cavern. Far below, through a heavy
- white mist, strange splashing noises can be heard.
- The mist rises up through a fissure in the ceiling.
- The path exits to the south and west.",
- s_to In_Oriental_Room,
- w_to In_Alcove;
-
- Object -> "fissure"
- with description "You can't really get close enough to examine it.",
- name "fissure" "ceiling"
- has scenery;
-
- ! ----------------------------------------------------------------------------
- ! Plovers and pyramids
- ! ----------------------------------------------------------------------------
-
- Object In_Alcove "Alcove"
- with description
- "You are in an alcove. A small northwest path seems
- to widen after a short distance. An extremely tight
- tunnel leads east. It looks like a very tight
- squeeze. An eerie light can be seen at the other
- end.",
- nw_to In_Misty_Cavern,
- e_to
- [ j; j=children(player);
- if (j==0 || (j==1 && egg_sized_emerald in player))
- return In_Plover_Room;
- "Something you're carrying won't fit through the
- tunnel with you. You'd best take inventory and drop
- something.";
- ];
-
-
- Object In_Plover_Room "Plover Room"
- with description
- "You're in a small chamber lit by an eerie green
- light. An extremely narrow tunnel exits to the west.
- A dark corridor leads northeast.",
- ne_to In_Dark_Room,
- w_to
- [ j; j=children(player);
- if (j==0 || (j==1 && egg_sized_emerald in player))
- return In_Alcove;
- "Something you're carrying won't fit through the
- tunnel with you. You'd best take inventory and drop
- something.";
- ],
- before
- [; Plover: if (egg_sized_emerald in player)
- move egg_sized_emerald to In_Plover_Room;
- PlayerTo(At_Y2); rtrue;
- Go: if (noun==out_obj) <<Go w_obj>>;
- ],
- has light;
-
- Treasure -> egg_sized_emerald "emerald the size of a plover's egg"
- with depositpoints 14, article "an",
- description "Plover's eggs, by the way, are quite large.",
- initial "There is an emerald here the size of a plover's egg!",
- name "emerald" "egg-sized" "egg" "sized" "plover^s";
-
-
- Object In_Dark_Room "The Dark Room"
- with description
- "You're in the dark-room. A corridor leading
- south is the only exit.",
- s_to In_Plover_Room
- has nodwarf;
-
- Object -> "stone tablet"
- with initial
- "A massive stone tablet imbedded in the wall reads:
- ~Congratulations on bringing light into the
- dark-room!~",
- name "tablet" "massive" "stone"
- has static;
-
- Treasure -> "platinum pyramid"
- with initial "There is a platinum pyramid here, 8 inches on a side!",
- depositpoints 14,
- description "The platinum pyramid is 8 inches on a side!",
- name "platinum" "pyramid" "platinum" "pyramidal";
-
- ! ----------------------------------------------------------------------------
- ! North of the complex junction: a long up-down corridor
- ! ----------------------------------------------------------------------------
-
- Object In_Arched_Hall "Arched Hall"
- with description
- "You are in an arched hall. A coral passage
- once continued up and east from here, but is now
- blocked by debris. The air smells of sea water.",
- d_to In_Shell_Room;
-
- Object In_Shell_Room "Shell Room"
- with description
- "You're in a large room carved out of
- sedimentary rock. The floor and walls are littered
- with bits of shells imbedded in the stone. A shallow
- passage proceeds downward, and a somewhat steeper one
- leads up. A low hands and knees passage enters from
- the south.",
- u_to In_Arched_Hall,
- d_to In_Ragged_Corridor,
- s_to
- [; if (giant_bivalve in player)
- { if (giant_bivalve has open)
- "You can't fit this five-foot oyster
- through that little passage!";
- else
- "You can't fit this five-foot clam
- through that little passage!";
- }
- return At_Complex_Junction;
- ];
-
-
- Object -> giant_bivalve "giant clam"
- with name "giant" "clam" "oyster" "bivalve",
- describe
- [; if (self has general)
- "There is an enormous oyster here with its shell tightly closed.";
- "There is an enormous clam here with its shell tightly closed.";
- ],
- before
- [; Examine: if (location==At_Ne_End or At_Sw_End)
- "Interesting. There seems to be something written on the
- underside of the oyster:^^
- ~There is something strange about this
- place, such that one of the words I've always known
- now has a new effect.~";
- "A giant bivalve of some kind.";
- Open:
- "You aren't strong enough to open the clam
- with your bare hands.";
- Unlock:
- if (second~=trident)
- print (The) trident,
- " isn't strong enough to open the clam.";
- if (self has general)
- "The oyster creaks open, revealing nothing
- but oyster inside. It promptly snaps shut
- again.";
- give self general; move pearl to In_A_Cul_De_Sac;
- "A glistening pearl falls out of the clam and
- rolls away. Goodness, this must really be an
- oyster. (I never was very good at
- identifying bivalves.) Whatever it is, it
- has now snapped shut again.";
- Attack:
- "The shell is very strong and is impervious to attack.";
- ];
-
- Treasure pearl "glistening pearl"
- with description "It's incredibly large!",
- initial "Off to one side lies a glistening pearl!",
- name "pearl" "glistening" "incredible" "incredibly" "large",
- depositpoints 14;
-
-
- Object In_Ragged_Corridor "Ragged Corridor"
- with description
- "You are in a long sloping corridor with ragged
- sharp walls.",
- u_to In_Shell_Room,
- d_to In_A_Cul_De_Sac;
-
- Object In_A_Cul_De_Sac "Cul-de-Sac"
- with description
- "You are in a cul-de-sac about eight feet
- across.",
- u_to In_Ragged_Corridor,
- out_to In_Ragged_Corridor;
-
- ! ----------------------------------------------------------------------------
- ! Witt's End: Cave under construction
- ! ----------------------------------------------------------------------------
-
- Object In_Anteroom "In Anteroom"
- with description
- "You are in an anteroom leading to a large
- passage to the east. Small passages go west and up.
- The remnants of recent digging are evident.",
- u_to At_Complex_Junction,
- w_to In_Bedquilt,
- e_to At_Witts_End;
-
- Object -> "sign"
- with initial
- "A sign in midair here says ~Cave under
- construction beyond this point. Proceed at own risk.
- [Witt Construction Company]~",
- name "sign" "witt" "company" "construction",
- before [; Take: "It's hanging way above your head."; ],
- has static;
-
- Object -> "recent issues of ~Spelunker Today~"
- with name "magazines" "magazine" "issue" "issues" "spelunker" "today",
- initial
- "There are a few recent issues of ~Spelunker Today~ magazine here.",
- description "I'm afraid the magazines are written in Dwarvish.",
- article "a few",
- after
- [; Take: if (location==At_Witts_End) score--;
- Drop: if (location==At_Witts_End)
- { score++;
- "You really are at wit's end.";
- }
- ],
- has multitude;
-
- Object At_Witts_End "At Witt's End"
- with description
- "You are at Witt's End. Passages lead off in
- *all* directions.",
- w_to "You have crawled around in some little holes and
- found your way blocked by a recent cave-in. You are
- now back in the main passage.",
- before
- [; Go: if (noun~=w_obj && random(100)<=95)
- "You have crawled around in some little holes and
- wound up back in the main passage.";
- PlayerTo(In_Anteroom); rtrue;
- ];
-
- ! ----------------------------------------------------------------------------
- ! North of the secret canyons, on the other side of the pit
- ! ----------------------------------------------------------------------------
-
- Object In_Mirror_Canyon "In Mirror Canyon"
- with description
- "You are in a north/south canyon about 25 feet
- across. The floor is covered by white mist seeping
- in from the north. The walls extend upward for well
- over 100 feet. Suspended from some unseen point far
- above you, an enormous two-sided mirror is hanging
- parallel to and midway between the canyon walls.^^
- A small window can be seen in either wall,
- some fifty feet up.",
- s_to In_Secret_N_S_Canyon_0,
- n_to At_Reservoir;
-
- Object -> "suspended mirror"
- with description
- "The mirror is obviously provided for the use of the
- dwarves who, as you know, are extremely vain.",
- name "mirror" "massive" "enormous" "hanging" "suspended"
- "dwarves^" "two-sided" "two" "sided",
- initial "The mirror is obviously provided for the use of the
- dwarves, who as you know, are extremely vain.",
- before [; Attack, Remove: "You can't reach it from here."; ],
- has static;
-
-
- Object At_Window_On_Pit_2 "At Window on Pit"
- with description
- "You're at a low window overlooking a huge pit,
- which extends up out of sight. A floor is
- indistinctly visible over 50 feet below. Traces of
- white mist cover the floor of the pit, becoming
- thicker to the left. Marks in the dust around the
- window would seem to indicate that someone has been
- here recently. Directly across the pit from you and
- 25 feet away there is a similar window looking into a
- lighted room. A shadowy figure can be seen there
- peering back at you.",
- cant_go "The only passage is back west to the junction.",
- w_to At_Junction_Of_Three,
- before
- [; Jump: deadflag=1; "You jump and break your neck!";
- WaveHands: "The shadowy figure waves back at you!";
- ];
-
- Object At_Reservoir "At Reservoir"
- with description
- "You are at the edge of a large underground
- reservoir. An opaque cloud of white mist fills the
- room and rises rapidly upward. The lake is fed by a
- stream, which tumbles out of a hole in the wall about
- 10 feet overhead and splashes noisily into the water
- somewhere within the mist. The only passage goes
- back toward the south.",
- s_to In_Mirror_Canyon,
- out_to In_Mirror_Canyon,
- before
- [; Swim: "The water is icy cold, and you would soon freeze to death.";
- ];
-
- ! ----------------------------------------------------------------------------
- ! The Chasm and the Troll Bridge
- ! ----------------------------------------------------------------------------
-
- Object In_Sloping_Corridor "Sloping Corridor"
- with description
- "You are in a long winding corridor sloping out
- of sight in both directions.",
- d_to In_Large_Low_Room,
- u_to On_Sw_Side_Of_Chasm,
- cant_go "The corridor slopes steeply up and down.";
-
- Object On_Sw_Side_Of_Chasm "On SW Side of Chasm"
- with description
- "You are on one side of a large, deep chasm. A
- heavy white mist rising up from below obscures all
- view of the far side. A southwest path leads away
- from the chasm into a winding corridor.",
- ne_to CrossRicketyBridge,
- sw_to In_Sloping_Corridor,
- d_to In_Sloping_Corridor,
- cant_go "The path winds southwest.",
- before
- [; Jump: if (RicketyBridge in self)
- "I respectfully suggest you go across the
- bridge instead of jumping.";
- deadflag=1; "You didn't make it.";
- ];
-
- [ CrossRicketyBridge;
- if (Troll has general || Troll in nothing)
- {
- give Troll ~general;
- if (Bear has general)
- { remove Bear; remove self; give Wreckage ~absent;
- remove RicketyBridge; give RicketyBridge absent; StopDaemon(Bear);
- deadflag=1;
- "Just as you reach the other side, the bridge
- buckles beneath the weight of the bear, which
- was still following you around. You scrabble
- desperately for support, but as the bridge
- collapses you stumble back and fall into the
- chasm.";
- }
- return RicketyBridge;
- }
- if (Troll in location)
- "The troll refuses to let you cross.";
- move Troll to location;
- "The troll steps out from beneath the bridge and blocks your way.";
- ];
-
- Object -> RicketyBridge "rickety bridge"
- with description "It just looks like an ordinary, but unstable, bridge.",
- describe
- [; print "A rickety wooden bridge extends across the
- chasm, vanishing into the mist.^^
- A sign posted on the bridge reads,
- ~Stop! Pay troll!~^";
- if (Troll notin location)
- "The troll is nowhere to be seen.";
- rtrue;
- ],
- name "bridge" "rickety" "unstable" "wobbly" "rope",
- door_dir
- [; if (location==On_Sw_Side_Of_Chasm) return ne_to; return sw_to;
- ],
- door_to
- [; if (location==On_Sw_Side_Of_Chasm) return On_Ne_Side_Of_Chasm;
- return On_Sw_Side_Of_Chasm;
- ],
- found_in On_Sw_Side_Of_Chasm On_Ne_Side_Of_Chasm
- has static door open;
-
- Object -> -> Troll "burly troll"
- with description
- "Trolls are close relatives with rocks and have skin
- as tough as that of a rhinoceros.",
- initial "A burly troll stands by the bridge and insists you
- throw him a treasure before you may cross.",
- name "troll" "burly",
- life
- [; Attack: "The troll laughs aloud at your pitiful attempt
- to injure him.";
- ThrowAt, Give:
- if (noun ofclass Treasure)
- { remove noun;
- move Troll to RicketyBridge;
- give Troll general; score=score-5;
- "The troll catches your treasure and scurries
- away out of sight.";
- }
- if (noun==tasty_food)
- "Gluttony is not one of the troll's vices.
- Avarice, however, is.";
- "The troll deftly catches ", (the) noun,
- ", examines it carefully, and tosses it back, declaring,
- ~Good workmanship, but it's not valuable enough.~";
- Order: "You'll be lucky.";
- Answer, Ask: "Trolls make poor conversation.";
- ],
- has animate;
-
- Object Wreckage "wreckage of bridge"
- with initial "The wreckage of the troll bridge (and a dead bear)
- can be seen at the bottom of the chasm.",
- name "wreckage" "wreck" "bridge" "dead" "bear",
- before
- [; "The wreckage is too far below.";
- ],
- found_in On_Sw_Side_Of_Chasm On_Ne_Side_Of_Chasm
- has static absent;
-
-
- Object On_Ne_Side_Of_Chasm "On NE Side of Chasm"
- with description
- "You are on the far side of the chasm. A
- northeast path leads away from the chasm on this
- side.",
- sw_to CrossRicketyBridge,
- ne_to In_Corridor,
- before
- [; Jump: if (RicketyBridge in self)
- "I respectfully suggest you go across the
- bridge instead of jumping.";
- deadflag=1; "You didn't make it.";
- ],
- has nodwarf;
-
- Object In_Corridor "In Corridor"
- with description
- "You're in a long east/west corridor. A faint
- rumbling noise can be heard in the distance.",
- w_to On_Ne_Side_Of_Chasm,
- e_to At_Fork_In_Path
- has nodwarf;
-
- ! ----------------------------------------------------------------------------
- ! The Volcano
- ! ----------------------------------------------------------------------------
-
- Object At_Fork_In_Path "At Fork in Path"
- with description
- "The path forks here. The left fork leads
- northeast. A dull rumbling seems to get louder in
- that direction. The right fork leads southeast down
- a gentle slope. The main corridor enters from the
- west.",
- w_to In_Corridor,
- ne_to At_Junction_With_Warm_Walls,
- se_to In_Limestone_Passage,
- d_to In_Limestone_Passage
- has nodwarf;
-
- Object At_Junction_With_Warm_Walls "At Junction With Warm Walls"
- with description
- "The walls are quite warm here. From the north
- can be heard a steady roar, so loud that the entire
- cave seems to be trembling. Another passage leads
- south, and a low crawl goes east.",
- s_to At_Fork_In_Path,
- n_to At_Breath_Taking_View,
- e_to In_Chamber_Of_Boulders
- has nodwarf;
-
-
- Object At_Breath_Taking_View "At Breath-Taking View"
- with description
- "You are on the edge of a breath-taking view. Far
- below you is an active volcano, from which great
- gouts of molten lava come surging out, cascading back
- down into the depths. The glowing rock fills the
- farthest reaches of the cavern with a blood-red
- glare, giving everything an eerie, macabre
- appearance. The air is filled with flickering sparks
- of ash and a heavy smell of brimstone. The walls are
- hot to the touch, and the thundering of the volcano
- drowns out all other sounds. Embedded in the jagged
- roof far overhead are myriad twisted formations
- composed of pure white alabaster, which scatter the
- murky light into sinister apparitions upon the walls.
- To one side is a deep gorge, filled with a bizarre
- chaos of tortured rock which seems to have been
- crafted by the devil himself. An immense river of
- fire crashes out from the depths of the volcano,
- burns its way through the gorge, and plummets into a
- bottomless pit far off to your left. To the right,
- an immense geyser of blistering steam erupts
- continuously from a barren island in the center of a
- sulfurous lake, which bubbles ominously. The far
- right wall is aflame with an incandescence of its
- own, which lends an additional infernal splendor to
- the already hellish scene. A dark, forboding passage
- exits to the south.",
- s_to At_Junction_With_Warm_Walls,
- out_to At_Junction_With_Warm_Walls,
- d_to "Don't be ridiculous!",
- before [; Jump: <<Go d_obj>>; ],
- has light;
-
-
- Object -> "active volcano"
- with description
- "Great gouts of molten lava come surging out of the
- volcano and go cascading back down into the depths.
- The glowing rock fills the farthest reaches of the
- cavern with a blood-red glare, giving everything an
- eerie, macabre appearance.",
- name "volcano" "rock"
- "active" "glowing" "blood" "blood-red" "red" "eerie" "macabre"
- has scenery;
-
-
- Object -> "sparks of ash"
- with description "The sparks too far away for you to get a good look at
- them.",
- name "spark" "sparks" "ash" "air" "flickering"
- has scenery multitude;
-
-
- Object -> "jagged roof"
- with description
- "Embedded in the jagged roof far overhead are myriad
- twisted formations composed of pure white alabaster,
- which scatter the murky light into sinister
- apparitions upon the walls.",
- name "roof" "formations" "light" "apparaitions"
- "jagged" "twsited" "murky" "sinister"
- has scenery;
-
- Object -> "deep gorge"
- with description
- "The gorge is filled with a bizarre chaos of tortured
- rock which seems to have been crafted by the devil
- himself.",
- name "gorge" "chaos" "rock" "deep" "bizarre" "tortured"
- has scenery;
-
- Object -> "river of fire"
- with description
- "The river of fire crashes out from the depths of the
- volcano, burns its way through the gorge, and
- plummets into a bottomless pit far off to your
- left.",
- name "river" "fire" "depth" "pit" "fire" "fiery" "bottomless"
- has scenery;
-
- Object -> "immense geyser"
- with description
- "The geyser of blistering steam erupts continuously
- from a barren island in the center of a sulfurous
- lake, which bubbles ominously.",
- name "geyser" "steam" "island" "lake"
- "immense" "blistering" "barren" "sulfrous"
- "sulferous" "sulpherous" "sulphrous" "bubbling"
- has scenery;
-
-
- Object In_Chamber_Of_Boulders "In Chamber of Boulders"
- with description
- "You are in a small chamber filled with large
- boulders. The walls are very warm, causing the air
- in the room to be almost stifling from the heat. The
- only exit is a crawl heading west, through which is
- coming a low rumbling.",
- w_to At_Junction_With_Warm_Walls,
- out_to At_Junction_With_Warm_Walls
- has nodwarf;
-
-
- Object -> "boulders"
- with description "They're just ordinary boulders. They're warm.",
- name "boulder" "boulders" "rocks" "stones"
- has scenery multitude;
-
- Treasure -> "rare spices"
- with name "spices" "spice" "rare" "exotic",
- depositpoints 14, article "a selection of",
- before
- [; Smell, Examine: "They smell wonderfully exotic!";
- ],
- has multitude;
-
- Object In_Limestone_Passage "In Limestone Passage"
- with description
- "You are walking along a gently sloping
- north/south passage lined with oddly shaped limestone
- formations.",
- n_to At_Fork_In_Path,
- u_to At_Fork_In_Path,
- s_to In_Front_Of_Barren_Room,
- d_to In_Front_Of_Barren_Room
- has nodwarf;
-
- Object -> "limestone formations"
- with description
- "Every now and then a particularly strange shape
- catches your eye.",
- name "formations" "shape" "shapes"
- "lime" "limestone" "stone" "oddly" "shaped"
- "oddly-shaped"
- has scenery multitude;
-
- ! ----------------------------------------------------------------------------
- ! If you go down to the woods today...
- ! ----------------------------------------------------------------------------
-
- Object In_Front_Of_Barren_Room "In Front of Barren Room"
- with description
- "You are standing at the entrance to a large,
- barren room. A sign posted above the entrance reads:
- ~Caution! Bear in room!~",
- w_to In_Limestone_Passage,
- u_to In_Limestone_Passage,
- e_to In_Barren_Room,
- in_to In_Barren_Room
- has nodwarf;
-
-
- Object -> "caution sign"
- with description "The sign reads, ~Caution! Bear in room!~",
- name "sign" "barren" "room" "caution"
- has scenery;
-
-
- Object In_Barren_Room "In Barren Room"
- with description
- "You are inside a barren room. The center of
- the room is completely empty except for some dust.
- Marks in the dust lead away toward the far end of the
- room. The only exit is the way you came in.",
- w_to In_Front_Of_Barren_Room,
- out_to In_Front_Of_Barren_Room
- has nodwarf;
-
-
- Object -> "dust"
- with description "It just looks like ordinary dust.",
- name "dust" "marks"
- has scenery;
-
- Object -> Bear "large cave bear"
- with
- following_you false,
- angry true,
-
- describe
- [; if (self.following_you)
- "You are being followed by a very large, tame bear.";
- if (self.angry)
- "There is a ferocious cave bear
- eyeing you from the far end of the room!";
- if (location==In_Barren_Room)
- "There is a gentle cave bear sitting placidly in one corner.";
- "There is a contented-looking bear wandering about nearby.";
- ],
- name "bear" "large" "tame" "ferocious" "cave",
- life
- [; Attack: if (axe in player) <<ThrowAt axe Bear>>;
- if (self.angry == false)
- "The bear is confused; he only wants to be your friend.";
- "With what? Your bare hands? Against *his* bear hands??";
- ThrowAt:
- if (noun~=axe) <<Give noun Bear>>;
- if (self.angry == false)
- "The bear is confused; he only wants to be your friend.";
- move axe to location; give axe general;
- "The axe misses and lands near the bear
- where you can't get at it.";
- Give:
- if (noun == tasty_food)
- { give axe ~general; remove tasty_food;
- self.angry = false;
- "The bear eagerly wolfs down your food, after
- which he seems to calm down considerably and
- even becomes rather friendly.";
- }
- if (self.angry == false)
- "The bear doesn't seem very interested in your offer.";
- "Uh-oh -- your offer only makes the bear angrier!";
- Order, Ask, Answer: "This is a Bear of very little brain.";
- ],
- before
- [; Examine:
- print "The bear is extremely large, ";
- if (self.angry == false) "but appears to be friendly.";
- "and seems quite ferocious!";
- Take, Catch: if (self.angry) "Surely you're joking!";
- if (golden_chain has locked)
- "The bear is still chained to the wall.";
- self.following_you = true; StartDaemon(Bear);
- "Ok, the bear's now following you around.";
- Drop, Release: if (self.following_you == false) "What?";
- self.following_you = false; StopDaemon(Bear);
- if (Troll in location)
- { remove Troll;
- "The bear lumbers toward the troll, who lets
- out a startled shriek and scurries away. The
- bear soon gives up the pursuit and wanders
- back.";
- }
- "The bear wanders away from you.";
- ],
-
- daemon
- [; if (location==thedark) rfalse;
- if (self in location)
- { if (location==At_Breath_Taking_View)
- "^The bear roars with delight.";
- rfalse;
- }
- move self to location;
- "^The bear lumbers along behind you.";
- ],
- has animate;
-
- Treasure -> golden_chain "golden chain"
- with depositpoints 14,
- describe
- [; if (self has locked) "The bear is held back by a solid gold chain.";
- "A solid golden chain lies in coils on the ground!";
- ],
- description "The chain has thick links of solid gold!",
- name "chain" "links" "shackles" "solid"
- "gold" "golden" "thick" "chains",
- with_key set_of_keys,
- before
- [; Take: if (self has locked)
- { if (Bear.angry) "It's locked to the ferocious bear!";
- "It's locked to the friendly bear.";
- }
- Unlock:
- if (Bear.angry)
- "There is no way to get past the bear to
- unlock the chain, which is probably just as well.";
- Lock: if (self hasnt locked) "The mechanism won't lock again.";
- ],
- after
- [; Unlock: "You unlock the chain, and set the tame bear free.";
- ],
- has lockable locked;
-
- ! ----------------------------------------------------------------------------
- ! The Different Maze
- ! ----------------------------------------------------------------------------
-
- Class DiffMazeRoom
- with short_name "Maze";
-
- DiffMazeRoom Different_Maze_1
- with description
- "You are in a maze of twisty little passages, all different.",
- s_to Different_Maze_3,
- sw_to Different_Maze_4,
- ne_to Different_Maze_5,
- se_to Different_Maze_6,
- u_to Different_Maze_7,
- nw_to Different_Maze_8,
- e_to Different_Maze_9,
- w_to Different_Maze_10,
- n_to Different_Maze_11,
- d_to At_West_End_Of_Long_Hall;
-
-
- DiffMazeRoom Different_Maze_2
- with description
- "You are in a little maze of twisting passages, all different.",
- sw_to Different_Maze_3,
- n_to Different_Maze_4,
- e_to Different_Maze_5,
- nw_to Different_Maze_6,
- se_to Different_Maze_7,
- ne_to Different_Maze_8,
- w_to Different_Maze_9,
- d_to Different_Maze_10,
- u_to Different_Maze_11,
- s_to Dead_End_14;
-
- DiffMazeRoom Different_Maze_3
- with description
- "You are in a maze of twisting little passages, all different.",
- w_to Different_Maze_1,
- se_to Different_Maze_4,
- nw_to Different_Maze_5,
- sw_to Different_Maze_6,
- ne_to Different_Maze_7,
- u_to Different_Maze_8,
- d_to Different_Maze_9,
- n_to Different_Maze_10,
- s_to Different_Maze_11,
- e_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_4
- with description
- "You are in a little maze of twisty passages, all different.",
- nw_to Different_Maze_1,
- u_to Different_Maze_3,
- n_to Different_Maze_5,
- s_to Different_Maze_6,
- w_to Different_Maze_7,
- sw_to Different_Maze_8,
- ne_to Different_Maze_9,
- e_to Different_Maze_10,
- d_to Different_Maze_11,
- se_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_5
- with description
- "You are in a twisting maze of little passages, all different.",
- u_to Different_Maze_1,
- d_to Different_Maze_3,
- w_to Different_Maze_4,
- ne_to Different_Maze_6,
- sw_to Different_Maze_7,
- e_to Different_Maze_8,
- n_to Different_Maze_9,
- nw_to Different_Maze_10,
- se_to Different_Maze_11,
- s_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_6
- with description
- "You are in a twisting little maze of passages, all different.",
- ne_to Different_Maze_1,
- n_to Different_Maze_3,
- nw_to Different_Maze_4,
- se_to Different_Maze_5,
- e_to Different_Maze_7,
- d_to Different_Maze_8,
- s_to Different_Maze_9,
- u_to Different_Maze_10,
- w_to Different_Maze_11,
- sw_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_7
- with description
- "You are in a twisty little maze of passages, all different.",
- n_to Different_Maze_1,
- se_to Different_Maze_3,
- d_to Different_Maze_4,
- s_to Different_Maze_5,
- e_to Different_Maze_6,
- w_to Different_Maze_8,
- sw_to Different_Maze_9,
- ne_to Different_Maze_10,
- nw_to Different_Maze_11,
- u_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_8
- with description
- "You are in a twisty maze of little passages, all different.",
- e_to Different_Maze_1,
- w_to Different_Maze_3,
- u_to Different_Maze_4,
- sw_to Different_Maze_5,
- d_to Different_Maze_6,
- s_to Different_Maze_7,
- nw_to Different_Maze_9,
- se_to Different_Maze_10,
- ne_to Different_Maze_11,
- n_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_9
- with description
- "You are in a little twisty maze of passages, all different.",
- se_to Different_Maze_1,
- ne_to Different_Maze_3,
- s_to Different_Maze_4,
- d_to Different_Maze_5,
- u_to Different_Maze_6,
- nw_to Different_Maze_7,
- n_to Different_Maze_8,
- sw_to Different_Maze_10,
- e_to Different_Maze_11,
- w_to Different_Maze_2;
-
-
- DiffMazeRoom Different_Maze_10
- with description
- "You are in a maze of little twisting passages, all different.",
- d_to Different_Maze_1,
- e_to Different_Maze_3,
- ne_to Different_Maze_4,
- u_to Different_Maze_5,
- w_to Different_Maze_6,
- n_to Different_Maze_7,
- s_to Different_Maze_8,
- se_to Different_Maze_9,
- sw_to Different_Maze_11,
- nw_to Different_Maze_2;
-
- DiffMazeRoom Different_Maze_11
- with description
- "You are in a maze of little twisty passages, all different.",
- sw_to Different_Maze_1,
- nw_to Different_Maze_3,
- e_to Different_Maze_4,
- w_to Different_Maze_5,
- n_to Different_Maze_6,
- d_to Different_Maze_7,
- se_to Different_Maze_8,
- u_to Different_Maze_9,
- s_to Different_Maze_10,
- ne_to Different_Maze_2;
-
-
- DeadEndRoom Dead_End_14
- with short_name
- "Dead End, near Vending Machine",
- description
- "You have reached a dead end. There is a massive
- vending machine here.",
- n_to Different_Maze_2,
- out_to Different_Maze_2
- has nodwarf;
-
- Object -> "message in the dust"
- with description
- "The message reads, ~This is not the maze where the
- pirate leaves his treasure chest.~",
- name "message" "scrawl" "writing" "script" "scrawled" "flowery",
- initial "Hmmm... There is a message here
- scrawled in the dust in a flowery script."
- has scenery;
-
-
- Object -> VendingMachine "vending machine"
- with description
- "The instructions on the vending machine read,
- ~Insert coins to receive fresh batteries.~",
- name "machine" "slot" "vending" "massive" "battery" "coin",
- before
- [; Receive:
- if (noun==rare_coins)
- { move fresh_batteries to location;
- remove rare_coins;
- "Soon after you insert the coins in the coin
- slot, the vending machines makes a grinding
- sound, and a set of fresh batteries falls at your feet.";
- }
- "The machine seems to be designed to take coins.";
- Attack:
- "The machine is quite sturdy and survives your attack
- without getting so much as a scratch.";
- LookUnder:
- "You don't find anything under the machine.";
- Search:
- "You can't get inside the machine.";
- Take: "The vending machine is far too heavy to move.";
- ],
- has scenery;
-
- Object fresh_batteries "fresh batteries" VendingMachine
- with description "They look like ordinary batteries. (A sepulchral
- voice says, ~Still going!~)",
- initial "There are fresh batteries here.",
- name "batteries" "battery" "fresh",
- before [; Count: "A pair."; ];
-
- Object old_batteries "worn-out batteries"
- with description "They look like ordinary batteries.",
- initial "Some worn-out batteries have been discarded nearby.",
- name "batteries" "battery" "worn" "out" "worn-out",
- before [; Count: "A pair."; ];
-
- ! ----------------------------------------------------------------------------
- ! Dwarves!
- ! ----------------------------------------------------------------------------
-
- Object dwarf "threatening little dwarf"
- with name "dwarf" "threatening" "nasty" "little" "mean",
- description "It's probably not a good idea to get too close. Suffice
- it to say the little guy's pretty aggressive.",
- initial "A threatening little dwarf hides in the shadows.",
- number 5,
-
- daemon
- [; if (location==thedark) return;
- if (self.number==0) { StopDaemon(self); return; }
- if (parent(dwarf)==0)
- { if (location has nodwarf || location has light) return;
- if (random(100)<=self.number)
- { if (Bear in location || Troll in location) return;
- new_line;
- if (Dragon in location)
- { self.number--;
- "A dwarf appears, but with one casual blast the dragon
- vapourises him!";
- }
- move dwarf to location;
- "A threatening little dwarf comes out of the shadows!";
- }
- return;
- }
- if (parent(dwarf)~=location)
- { if (location==thedark) return;
- if (location has nodwarf || location has light) return;
- if (random(100)<=96 && parent(dwarf)~=In_Mirror_Canyon)
- { move dwarf to location;
- print "^The dwarf stalks after you...^";
- }
- else { remove dwarf; return; }
- }
- if (random(100)<=75)
- { new_line;
- if (self hasnt general)
- { move axe to location; give self general; remove self;
- "The dwarf throws a nasty little axe at you, misses,
- curses, and runs away.";
- }
- if (location==In_Mirror_Canyon)
- "The dwarf admires himself in the mirror.";
- print "The dwarf throws a nasty little knife at you, ";
- if (random(1000)<=95) { deadflag=1; "and hits!"; }
- "but misses!";
- }
- if (random(3)==1)
- { remove dwarf; "^Tiring of this, the dwarf slips away."; }
- ],
- before
- [; Kick: "You boot the dwarf across the room. He curses, then
- gets up and brushes himself off. Now he's madder
- than ever!";
- ],
- life
- [; ThrowAt:
- if (noun==axe)
- { if (random(3)~=1)
- { remove self; move axe to location;
- self.number--;
- "You killed a little dwarf! The body vanishes in a cloud
- of greasy black smoke.";
- }
- move axe to location;
- "Missed! The little dwarf dodges out of the way of the axe.";
- }
- <<Give noun second>>;
- Give:
- if (noun==tasty_food) "You fool, dwarves eat only coal!
- Now you've made him *really* mad!";
- "The dwarf is not at all interested in your
- offer. (The reason being, perhaps, that if
- he kills you he gets everything you have
- anyway.)";
- Attack: "Not with your bare hands. No way.";
- ],
- has animate;
-
- Object axe "dwarvish axe"
- with name "axe" "little" "dwarvish" "dwarven",
- initial "There is a little axe here.",
- description "It's just a little axe.",
- before
- [; if (axe hasnt general) rfalse;
- Examine: "It's lying beside the bear.";
- Take: "No chance. It's lying beside the ferocious
- bear, quite within harm's way.";
- ];
-
- ! ----------------------------------------------------------------------------
- ! Two brushes with piracy
- ! ----------------------------------------------------------------------------
-
- Object pirate
- with
- has_stolen_something false,
- has_been_spotted false,
-
- daemon
- [ obj booty_nearby;
-
- if (random(100) > 2
- || location==thedark or In_Secret_Canyon
- || location has light
- || location has nodwarf) return;
-
- if (dwarf in location)
- "^A bearded pirate appears, catches sight of the dwarf and runs
- away.";
-
- objectloop (obj ofclass Treasure && obj in player or location)
- booty_nearby = true;
-
- if (booty_nearby == false)
- { if (self.has_been_spotted) return;
- self.has_been_spotted = true;
- if (self.has_stolen_something) StopDaemon(self);
- "^There are faint rustling noises from the darkness behind you.
- As you turn toward them, you spot a bearded pirate. He is
- carrying a large chest.^^
- ~Shiver me timbers!~ he cries, ~I've been spotted! I'd best
- hie meself off to the maze to hide me chest!~^^
- With that, he vanishes into the gloom.";
- }
-
- if (self.has_stolen_something) return;
- self.has_stolen_something = true;
- if (self.has_been_spotted) StopDaemon(self);
-
- objectloop (obj ofclass Treasure && obj in player or location)
- { if (obj in player) score = score - 5;
- move obj to Dead_End_13;
- }
-
- "^Out from the shadows behind you pounces a bearded pirate! ~Har,
- har,~ he chortles. ~I'll just take all this booty and hide it
- away with me chest deep in the maze!~ He snatches your treasure
- and vanishes into the gloom.";
- ];
-
- ! ----------------------------------------------------------------------------
- ! The cave is closing now...
- ! ----------------------------------------------------------------------------
-
- Object cave_closer
- with daemon
- [; if (treasures_found < MAX_TREASURES) return;
- StopDaemon(self);
- caves_closed=1;
-
- score=score + 25;
-
- remove CrystalBridge;
- give Grate locked ~open; remove set_of_keys;
-
- StopDaemon(dwarf); StopDaemon(pirate);
- remove Troll; remove Bear; remove Dragon;
-
- StartTimer(endgame_timer, 25);
-
- "^A sepulchral voice reverberating through the cave says,
- ~Cave closing soon. All adventurers exit immediately
- through main office.~";
- ];
-
- Object endgame_timer
- with time_left 0,
- time_out
- [; score=score + 10;
-
- while (child(player)~=0) remove child(player);
-
- move bottle to At_Ne_End;
- if (child(bottle)~=0) remove child(bottle);
-
- move giant_bivalve to At_Ne_End;
- move brass_lantern to At_Ne_End;
- move black_rod to At_Ne_End;
- move little_bird to At_Sw_End;
- move velvet_pillow to At_Sw_End;
-
- print "^The sepulchral voice intones, ~The cave is now
- closed.~ As the echoes fade, there is a blinding flash of
- light (and a small puff of orange smoke). . .^^
- As your eyes refocus, you look around...^";
- PlayerTo(At_Ne_End);
- ];
-
- ! ----------------------------------------------------------------------------
- ! The End Game
- ! ----------------------------------------------------------------------------
-
- Object At_Ne_End "NE End of Repository"
- with description "You are at the northeast end of an immense
- room, even larger than the giant room. It appears to
- be a repository for the ~Adventure~ program.
- Massive torches far overhead bathe the room with
- smoky yellow light. Scattered about you can be seen
- a pile of bottles (all of them empty), a nursery of
- young beanstalks murmuring quietly, a bed of oysters,
- a bundle of black rods with rusty stars on their
- ends, and a collection of brass lanterns. Off to one
- side a great many dwarves are sleeping on the floor,
- snoring loudly. A sign nearby reads: ~Do not
- disturb the dwarves!~",
- sw_to At_Sw_End
- has light;
-
-
- Object -> "enormous mirror"
- with description "It looks like an ordinary, albeit enormous, mirror.",
- name "mirror" "enormous" "huge" "big" "large" "suspended"
- "hanging" "vanity" "dwarvish",
- initial "An immense mirror is hanging against one wall,
- and stretches to the other end of the room, where
- various other sundry objects can be glimpsed dimly in
- the distance.",
- found_in At_Ne_End At_Sw_End,
- before
- [;
- Attack:
- print "You strike the mirror a resounding blow, whereupon
- it shatters into a myriad tiny fragments.^^";
- SleepingDwarves.wake_up(); rtrue;
- ],
- has static;
-
-
- Object -> "collection of adventure game materials"
- with description
- "You've seen everything in here already, albeit
- in somewhat different contexts.",
- name "stuff" "junk" "materials" "torches" "objects"
- "adventure" "repository" "massive" "sundry",
- before
- [; Take: "Realizing that by removing the loot here you'd be
- ruining the game for future players, you leave the
- ~Adventure~ materials where they are.";
- ],
- has scenery;
-
-
- Object -> SleepingDwarves "sleeping dwarves"
- with description "I wouldn't bother the dwarves if I were you.",
- name "dwarf" "dwarves" "sleeping" "snoring" "dozing" "snoozing",
- article "hundreds of angry",
- before
- [;
- Take: "What, all of them?";
- ],
- life
- [; WakeOther:
- print "You prod the nearest dwarf, who wakes up grumpily,
- takes one look at you, curses, and grabs for his
- axe.^^";
- self.wake_up(); rtrue;
- Attack: self.wake_up(); rtrue;
- ],
- wake_up
- [; deadflag=1;
- "The resulting ruckus has awakened the dwarves. There
- are now dozens of threatening little dwarves in the room with
- you! Most of them throw knives at you! All of them get you!";
- ],
- has animate scenery multitude;
-
-
- Object At_Sw_End "SW End of Repository"
- with description
- "You are at the southwest end of the repository.
- To one side is a pit full of fierce green snakes. On
- the other side is a row of small wicker cages, each
- of which contains a little sulking bird. In one
- corner is a bundle of black rods with rusty marks on
- their ends. A large number of velvet pillows are
- scattered about on the floor. A vast mirror stretches
- off to the northeast. At your feet is a large steel
- grate, next to which is a sign which reads,
- ~TREASURE VAULT. Keys in main office.~",
- d_to RepositoryGrate,
- ne_to At_Ne_End
- has light;
-
-
- Object -> RepositoryGrate "steel grate"
- with name "ordinary" "steel" "grate" "grating",
- description
- "It just looks like an ordinary steel grate.",
- when_open "The grate is open.",
- when_closed "The grate is closed.",
- door_dir d_to, door_to Outside_Grate, with_key 0
- has static door locked openable;
-
-
- Object -> "collection of adventure game materials"
- with description
- "You've seen everything in here already, albeit
- in somewhat different contexts.",
- name "pit" "snake" "snakes" "fierce" "green"
- "stuff" "junk" "materials"
- "adventure" "repository" "massive" "sundry",
- before
- [; Take: "Realizing that by removing the loot here you'd be
- ruining the game for future players, you leave the
- ~Adventure~ materials where they are.";
- ],
- has scenery;
-
- Object -> black_mark_rod "black rod with a rusty mark on the end"
- with description "It's a three foot black rod with a rusty mark on an end.",
- initial "A three foot black rod
- with a rusty mark on one end lies nearby.",
- name "rod" "black" "rusty" "mark" "three" "foot" "iron" "explosive"
- "dynamite" "blast",
- before [; Wave: "Nothing happens."; ];
-
- ! ----------------------------------------------------------------------------
- ! Some entry points
- ! ----------------------------------------------------------------------------
-
- [ Initialise;
- location=At_End_Of_Road; score = 36;
-
- StartDaemon(dwarf); StartDaemon(pirate); StartDaemon(cave_closer);
-
- print "^^^^^Welcome to Adventure!^^";
- ];
-
- [ PrintRank;
- print ", earning you the rank of ";
- if (score >= 348) "Grandmaster Adventurer!";
- if (score >= 330) "Master, first class.";
- if (score >= 300) "Master, second class.";
- if (score >= 200) "Junior Master.";
- if (score >= 130) "Seasoned Adventurer.";
- if (score >= 100) "Experienced Adventurer.";
- if (score >= 35) "Adventurer.";
- if (score >= 10) "Novice.";
- "Amateur.";
- ];
-
- [ DarkToDark;
- if (dark_warning == false)
- { dark_warning = true;
- "It is now pitch dark.
- If you proceed you will likely fall into a pit.";
- }
- if (random(4) == 1)
- { deadflag = 1;
- "You fell into a pit and broke every bone in your body!";
- }
- rfalse;
- ];
-
- ! ----------------------------------------------------------------------------
- ! Menu-driven help (not really a part of the game itself)
- ! ----------------------------------------------------------------------------
-
- [ HelpMenu;
- if (menu_item==0) { item_width=8; item_name="About Adventure";
- if (deadflag==2) return 4; else return 3;
- }
- if (menu_item==1) { item_width=6; item_name="Instructions"; }
- if (menu_item==2) { item_width=4; item_name="History"; }
- if (menu_item==3) { item_width=6; item_name="Authenticity"; }
- if (menu_item==4) { item_width=7; item_name="Did you know..."; }
- ];
-
- [ HelpInfo;
- if (menu_item==1)
- {
- print "I know of places, actions, and things. You can guide
- me using commands that are complete sentences. To move, try
- commands like ~enter,~ ~east,~ ~west,~ ~north,~ ~south,~ ~up,~
- ~down,~ ~enter building,~ ~climb pole,~ etc.^^";
-
- print "I know about a few special objects, like a black rod
- hidden in the cave. These objects can be manipulated using
- some of the action words that I know. Usually you will need
- to give a verb followed by an object (along with descriptive
- adjectives when desired), but sometimes I can infer the
- object from the verb alone. Some objects also imply verbs;
- in particular, ~inventory~ implies ~take inventory~,
- which causes me to give you a list of what you're carrying.
- The objects have side effects; for instance, the rod scares
- the bird.^^";
-
- print "Many commands have abbreviations. For example, you can
- type ~i~ in place of ~inventory,~ ~x object~ instead of
- ~examine object,~ etc.^^";
-
- print "Usually people having trouble moving just need to try a
- few more words. Usually people trying unsuccessfully to
- manipulate an object are attempting something beyond their
- (or my!) capabilities and should try a completely different
- tack.^^";
-
- print "Note that cave passages turn a lot, and that leaving a room
- to the north does not guarantee
- entering the next from the south.^^";
-
- print "If you want to end your adventure early, type ~quit~.
- To suspend your adventure such that you can continue later,
- type ~save,~ and to resume a saved game, type ~restore.~
- To see how well you're doing, type ~score~. To get full
- credit for a treasure, you must have left it safely in the
- building, though you get partial credit just for locating it.
- You lose points for getting killed, or for quitting, though
- the former costs you more. There are also points based on how
- much (if any) of the cave you've managed to explore; in
- particular, there is a large bonus just for getting in (to
- distinguish the beginners from the rest of the pack), and
- there are other ways to determine whether you've been through
- some of the more harrowing sections.^^";
-
- print "If you think you've found all the treasures, just keep
- exploring for a while. If nothing interesting happens, you
- haven't found them all yet. If something interesting *does*
- happen, it means you're getting a bonus and have an
- opportunity to garner many more points in the master's
- section.^^";
-
- "Good luck!";
- }
- if (menu_item==2)
- {
- print "Perhaps the first adventurer was a mulatto slave named Stephen
- Bishop, born about 1820: `slight, graceful, and very handsome';
- a `quick, daring, enthusiastic' guide to the Mammoth Cave in the
- Kentucky karst. The story of the Cave is a curious microcosm of
- American history. Its discovery is a matter of legend dating
- back to the 1790s; it is said that a hunter, John Houchin,
- pursued a wounded bear to a large pit near the Green River and ";
- print "stumbled upon the entrance. The entrance was thick with bats and
- by the War of 1812 was intensively mined for guano, dissolved into
- nitrate vats to make saltpetre for gunpowder. After the war prices
- fell; but the Cave became a minor side-show when a dessicated Indian
- mummy was found nearby, sitting upright in a stone coffin, surrounded
- by talismans. In 1815, Fawn Hoof, as she was nicknamed after one of
- the charms, was taken away by a circus, drawing crowds across America
- (a tour rather reminiscent of Don McLean's song `The Legend of Andrew
- McCrew'). She ended up in the Smithsonian but by the 1820s the Cave
- was being called one of the wonders of the world, largely due to her
- posthumous efforts.^^";
-
- print "By the early nineteenth century European caves were big tourist
- attractions, but hardly anyone visited the Mammoth, `wonder of the
- world' or not. Nor was it then especially large (the name was a
- leftover from the miners, who boasted of their mammoth yields of
- guano). In 1838, Stephen Bishop's owner bought up the Cave.
- Stephen, as (being a slave) he was invariably called, was by any
- standards a remarkable man: self-educated in Latin and Greek, he
- became famous as the `chief ruler' of his underground realm. He ";
- print "explored and named much of the layout in his spare time, doubling
- the known map in a year. The distinctive flavour of the Cave's
- names - half-homespun American, half-classical - started with
- Stephen: the River Styx, the Snowball Room, Little Bat Avenue,
- the Giant Dome. Stephen found strange blind fish, snakes, silent
- crickets, the remains of cave bears (savage, playful creatures,
- five feet long and four high, which became extinct at the end of
- the last Ice Age), centuries-old Indian gypsum workings and ever
- more cave. His 1842 map, drafted entirely from memory, was still
- in use forty years later.^^";
- print "As a tourist attraction (and, since Stephen's owner was a
- philanthropist, briefly a sanatorium for tuberculosis, owing to a
- hopeless medical theory) the Cave became big business: for decades
- nearby caves were hotly seized and legal title endlessly challenged.
- The neighbouring chain, across Houchins Valley in the Flint Ridge,
- opened the Great Onyx Cave in 1912. By the 1920s, the Kentucky Cave ";
- print "Wars were in full swing. Rival owners diverted tourists with fake
- policemen, employed stooges to heckle each other's guided tours,
- burned down ticket huts, put out libellous and forged advertisements.
- Cave exploration became so dangerous and secretive that finally in
- 1941 the U.S. Government stepped in, made much of the area a National
- Park and effectively banned caving. The gold rush of tourists was,
- in any case, waning.^^";
-
- print "Convinced that the Mammoth and Flint Ridge caves were all linked in
- a huge chain, explorers tried secret entrances for years, eventually
- winning official backing. Throughout the 1960s all connections from
- Flint Ridge - difficult and water-filled tunnels - ended
- frustratingly in chokes of boulders. A `reed-thin' physicist,
- Patricia Crowther, made the breakthrough in 1972 when she got through
- the Tight Spot and found a muddy passage: it was a hidden way into
- the Mammoth Cave.^^";
-
- print "Under the terms of his owner's will, Stephen Bishop was freed in
- 1856, at which time the cave boasted 226 avenues, 47 domes, 23 pits
- and 8 waterfalls. He died a year later, before he could buy his
- wife and son. In the 1970s, Crowther's muddy passage was found on
- his map.^^";
-
- print "The Mammoth Cave is huge, its full extent still a matter of
- speculation (estimates vary from 300 to 500 miles). Although this
- game has often been called ~Colossal Cave~, it is actually a
- simulation of the Bedquilt Cave region. Here is Will Crowther's
- story of how it came about:^^";
-
- print "~I had been involved in a non-computer role-playing game called
- Dungeons and Dragons at the time, and also I had been actively
- exploring in caves - Mammoth Cave in Kentucky in particular.
- Suddenly, I got involved in a divorce, and that left me a bit
- pulled apart in various ways. In particular I was missing my
- kids. Also the caving had stopped, because that had become
- awkward, so I decided I would fool around and write a program
- that was a re-creation in fantasy of my caving, and also would
- be a game for the kids, and perhaps some aspects of the
- Dungeons and Dragons that I had been playing.^^";
-
- print "~My idea was that it would be a computer game that would not be
- intimidating to non-computer people, and that was one of the reasons
- why I made it so that the player directs the game with natural
- language input, instead of more standardized commands. My kids
- thought it was a lot of fun.~ [Quoted in ~Genesis II: Creation
- and Recreation with Computers~, Dale Peterson (1983).]^^";
-
- print "Crowther's original FORTRAN program had five or so treasures, but
- no formal scoring. The challenge was really to explore, though
- there was opposition from for instance the snake. Like the real
- Bedquilt region, Crowther's simulation has a map on about four
- levels of depth and is rich in geological detail. A good example
- is the orange column which descends to the Orange River Rock room
- (where the bird lives): the real column is of orange travertine,
- a beautiful mineral found in wet limestone.^^";
-
- print "The game's language is loaded with references to caving, to `domes'
- and `crawls'. A `slab room', for instance, is a very old cave whose
- roof has begun to break away into sharp flakes which litter the
- floor in a crazy heap. The program's use of the word `room' for
- all manner of caves and places seems slightly sloppy in everyday ";
- print "English, but is widespread in American caving and goes back as far
- as Stephen Bishop: so the Adventure-games usage of the word `room'
- to mean `place' may even be bequeathed from him.^^";
-
- print "The game took its decisive step toward puzzle-solving when Don Woods,
- a student at Stanford, debugged and expanded it. He tripled the
- number of treasures and added the non-geological zones: everything
- from the Troll Bridge onward, together with most of the antechambers
- on the Bedquilt level. All of the many imitations and extensions
- of the original Adventure are essentially based on Woods's 350-point
- edition. (Many bloated, corrupted or enhanced - it depends how you
- see it - versions of the game are in Internet circulation, and the
- most useful way to identify them is by the maximum attainable score.
- Many versions exist scoring up to around the 400s and 500s, and one
- up to 1000. Woods himself continues to release new versions of his
- game; most of the other extenders haven't his talent.)^^";
-
- print "Although the game has veered away from pure simulation, a good
- deal of it remains realistic. Cavers do turn back when their carbide
- lamps flicker; there are indeed mysterious markings and initials on
- the cave walls, some left by the miners, some by Bishop, some by
- 1920s explorers. Of course there isn't an active volcano in central
- Kentucky, nor are there dragons and dwarves. But even these
- embellishments are, in a sense, derived ";
- print "from tradition: like most of the early role-playing games,
- `Adventure' owes much to J. R. R. Tolkien's `The Hobbit', and the
- passage through the mountains and Moria of `The Lord of the Rings'
- (arguably its most dramatic and atmospheric passage). Tolkien
- himself, the most successful myth-maker of the twentieth century,
- worked from the example of Icelandic, Finnish and Welsh sagas.^^";
-
- print "By 1977 tapes of `Adventure' were being circulated widely, by the
- Digital user group DECUS, amongst others: taking over lunchtimes
- and weekends wherever it went... but that's another story. (Tracy
- Kidder's fascinating book `The Soul of a New Machine', a
- journalist's-eye-view of a mainframe computer development group,
- catches it well.)^^";
-
- "This is a copy at third or fourth hand: from Will Crowther's original
- to Donald Woods's 350-point edition to Donald Ekman's PC port to
- David M. Baggett's excellent TADS version (1993), to this.^^";
- }
-
- if (menu_item==3)
- {
- print "This port is fairly close to the original. The puzzles, items and
- places of Woods's original 350-point version are exactly those here.^^";
-
- print "I have added a few helpful messages, such as ~This is a dead end.~,
- here and there: and restored some ~initial position~ messages from
- objects, such as the (rather lame)^
- ^ There is tasty food here.^^
- from source files which are certainly early but of doubtful
- provenance. They seem to sit well with the rest of the text.^^";
-
- print "The scoring system is the original, except that you no longer lose 4
- points for quitting (since you don't get the score if you quit an
- Inform game, this makes no difference) and, controversially, I award
- 5 points for currently carrying a treasure, as some early 1980s
- ports did. The rank names are tidied up a little. The only
- significant rule change is that one cannot use
- magic words until their destinations have been visited.^^";
-
- print "The dwarves are simpler in their movements, but on the other hand I
- have added a very few messages to make them interact better with the
- rest of the game. The probabilities are as in the original game.^^";
-
- print "In the original one could type the name of a room to visit it: for
- the sake of keeping the code small, I have omitted this feature, but
- with some regrets.^^";
-
- print "The text itself is almost everywhere preserved intact, but I've
- corrected some spelling and grammatical mistakes (and altered a
- couple of utterly misleading and gnomic remarks). The instructions
- have been slightly altered (for obvious reasons) but are basically
- as written.^^";
-
- "A good source for details is David Baggett's source code, which is
- circulated on the Internet.";
- }
-
- print "Did you know that...^^";
-
- print "The five dwarves have a 96% chance of following you, except into
- light, down pits or when admiring themselves: and the nasty little
- knives are 9.5% accurate.^^";
-
- print "Dragons burn up dwarves (perhaps because dwarves eat only coal).^^";
-
- print "The bear (who likes the volcano) is too heavy for the bridge...
- and you can go back to the scene after being resurrected.^^";
-
- print "You can slip past the snake into the secret E/W canyon,
- 35% of the time at any rate. And walking about in the dark
- is not all that gruesome: it carries only a 25% risk of falling
- down a pit.^^";
-
- print "The vase does not like being immersed.^^";
-
- print "Shadowy figures can wave to each other.^^";
-
- print "Watering the hinges of the door rusts them up again.^^";
-
- print "When the cave closes, the grate is locked and the keys are thrown
- away, creatures run off and the crystal bridge vanishes...^^";
-
- print "...and a completely useless hint is written on the giant oyster's
- shell in the end game.^^";
-
- "The last lousy point can be won by... but no. That would be telling.";
-
- ];
-
- [ HelpSub;
-
- if (deadflag~=2)
- DoMenu("There is information provided on the following:^
- ^ Instructions for playing
- ^ A historical preface
- ^ How authentic is this edition?^",
- HelpMenu, HelpInfo);
- else
- DoMenu("There is information provided on the following:^
- ^ Instructions for playing
- ^ A historical preface
- ^ How authentic is this edition?
- ^ Did you know...^",
- HelpMenu, HelpInfo);
-
- ];
-
- [ Amusing; HelpSub(); ];
-
- ! ----------------------------------------------------------------------------
- ! New verbs (to add to the library stock)
- ! ----------------------------------------------------------------------------
-
- [ CatchSub;
- "You can't catch ", (the) noun, ".";
- ];
-
- [ ReleaseSub;
- "You can't release ", (the) noun, ".";
- ];
-
- [ WaterSub;
- if (bottle in player) <<Empty bottle>>;
- "Water? What water?";
- ];
-
- [ OilSub;
- if (bottle in player) <<Empty bottle>>;
- "Oil? What oil?";
- ];
-
- [ OnSub; if (brass_lantern notin player) "You have no lamp.";
- <<SwitchOn brass_lantern>>;
- ];
-
- [ OffSub; if (brass_lantern notin player) "You have no lamp.";
- <<SwitchOff brass_lantern>>;
- ];
-
- [ XyzzySub; "Nothing happens."; ];
- [ PlughSub; "Nothing happens."; ];
- [ PloverSub; "Nothing happens."; ];
- [ FeeSub; FthingSub(0); ];
- [ FieSub; FthingSub(1); ];
- [ FoeSub; FthingSub(2); ];
- [ FooSub; FthingSub(3); ];
-
- [ FthingSub i;
-
- if (feefie_count~=i) { feefie_count=0; "Get it right, dummy!"; }
-
- if (feefie_count++ == 3)
- { feefie_count=0;
- if (golden_eggs in In_Giant_Room) "Nothing happens.";
- if ((golden_eggs in player) || (golden_eggs in location))
- print "The nest of golden eggs has vanished!^";
- else print "Done!";
- if (golden_eggs in player) score=score-5;
- if (golden_eggs in Inside_Building)
- score=score-golden_eggs.depositpoints;
- move golden_eggs to In_Giant_Room;
- if (location==In_Giant_Room)
- "^^A large nest full of golden eggs suddenly appears out of nowhere!";
- }
- else "Ok.";
- ];
-
- [ CountSub;
- if (noun has multitude) "There are a multitude.";
- "I see one (1) ", (name) noun, ".";
- ];
- [ UseSub; "You'll have to be a bit more explicit than that."; ];
- [ BlastWithSub;
- if (second~=black_mark_rod) "Blasting requires dynamite.";
- "Been eating those funny brownies again?";
- ];
- [ OldMagicSub; "Good try, but that is an old worn-out magic word."; ];
- [ KickSub; <<Attack noun>>; ]; ! For kicking dwarves
-
- [ BlastSub;
- if (location~=At_Sw_End or At_Ne_End) "Frustrating, isn't it?";
- if (location==At_Sw_End && parent(black_mark_rod)==At_Ne_End)
- { score=score+35;
- deadflag=2;
- "There is a loud explosion, and a twenty-foot
- hole appears in the far wall, burying the dwarves in
- the rubble. You march through the hole and find
- yourself in the main office, where a cheering band of
- friendly elves carry the conquering adventurer off
- into the sunset.";
- }
- if (location==At_Ne_End && parent(black_mark_rod)==At_Sw_End)
- { score=score+20;
- deadflag=1;
- "There is a loud explosion, and a twenty-foot
- hole appears in the far wall, burying the snakes in
- the rubble. A river of molten lava pours in through
- the hole, destroying everything in its path,
- including you!";
- }
- deadflag=1;
- "There is a loud explosion, and you are suddenly
- splashed across the walls of the room.";
- ];
-
- ! ----------------------------------------------------------------------------
- ! Resurrection
- ! ----------------------------------------------------------------------------
-
- [ AfterLife o;
- if (deadflag==3) { deadflag=1; rfalse; }
- print "^^";
- if (caves_closed)
- "It looks as though you're dead. Well, seeing as how
- it's so close to closing time anyway, I think we'll
- just call it a day.";
- if (deaths==0)
- print "Oh dear, you seem to have gotten yourself killed. I
- might be able to help you out, but I've never really
- done this before. Do you want me to try to
- reincarnate you?^^";
- if (deaths==1)
- print "You clumsy oaf, you've done it again! I don't know
- how long I can keep this up. Do you want me to try
- reincarnating you again?^^";
- if (deaths==2)
- print "Now you've really done it! I'm out of orange smoke!
- You don't expect me to do a decent reincarnation
- without any orange smoke, do you?^^";
-
- print "> ";
- if (YesOrNo() == false)
- { switch(deaths)
- { 0: "Very well.";
- 1: "Probably a wise choice.";
- 2: "I thought not!";
- }
- }
-
- switch(deaths)
- { 0: print "All right. But don't blame me if something
- goes wr......^^^^
- --- POOF!! ---^^
- You are engulfed in a cloud of orange smoke.
- Coughing and gasping, you emerge from the smoke and
- find that you're....^";
- 1: print "Okay, now where did I put my orange smoke?.... >POOF!<
- ^^Everything disappears in a dense cloud of orange smoke.^";
- 2: "Okay, if you're so smart, do it yourself! I'm leaving!";
- }
-
- deaths++; score=score-10;
-
- if (location~=thedark)
- { while (child(player) ~= nothing)
- { o=child(player);
- move o to location;
- if (o ofclass Treasure) score=score-5;
- }
- }
- else
- { while (child(player) ~= nothing) move child(player) to real_location;
- }
-
- move brass_lantern to At_End_Of_Road; give brass_lantern ~on ~light;
- remove dwarf;
- deadflag=0;
- PlayerTo(Inside_Building);
- ];
-
- ! ----------------------------------------------------------------------------
- ! How to cheat in the test version: no dwarves or pirates, and magic words
- ! working from the beginning
- ! ----------------------------------------------------------------------------
-
- #IFDEF TEST_VERSION;
- [ XdetermSub; StopDaemon(dwarf); StopDaemon(pirate);
- give In_Debris_Room visited; give At_Y2 visited; give In_Plover_Room visited;
- ];
- #ENDIF;
-
- ! ----------------------------------------------------------------------------
- ! Grammar: the usual grammar and some extensions
- ! ----------------------------------------------------------------------------
-
- Include "Grammar";
-
- Verb "on"
- * -> On;
- Verb "off"
- * -> Off;
-
- Verb "catch" "capture"
- * creature -> Catch
- * creature "with" held -> Catch;
- Verb "release" "free"
- * creature -> Release;
- Verb "pour" "douse"
- * "water" "on" noun -> Water
- * "oil" "on" noun -> Oil
- * noun -> Empty;
- Verb "water" * noun -> Water;
- Verb "oil" "grease" "lubricate"
- * noun -> Oil;
- Verb "plugh" * -> Plugh;
- Verb "xyzzy" * -> Xyzzy;
- Verb "plover" * -> Plover;
- Verb "sesame" "shazam" "hocus" "abracadabra"
- "foobar" "open-sesame" "frotz"
- * -> OldMagic;
- Verb "fee" * -> Fee;
- Verb "fie" * -> Fie;
- Verb "foe" * -> Foe;
- Verb "foo" * -> Foo;
-
- Verb "help" * -> Help;
- Verb "kick" * noun -> Kick;
- Verb "count" * noun -> Count;
- Verb "use" * -> Use;
- Verb "blast" * -> Blast
- * noun "with" held -> BlastWith;
-
- #IFDEF TEST_VERSION;
- Verb "xdeterm" * -> Xdeterm;
- #ENDIF;
-
- ! ----------------------------------------------------------------------------
-